J'apprends comment faire des scripts Shell à UNIX, mais je continue à venir sur cette erreur stupide. Disons que je fais un script comme celui-ci:
./test: Command not found.
10 Réponses :
On dirait que vous avez besoin d'une barre oblique avant la poubelle:
# tells you where sh resides, if it is on your path $ which sh /bin/sh # tells you which shell you are currently using $ echo $SHELL /bin/tcsh
Eh bien, je viens de remplacer l'en-tête avec ce que vous avez posté et que je reçois la même erreur.
Le #! code> indique à UNIX d'exécuter votre script à l'aide du programme spécifié. Dans votre cas, vous avez spécifié bin / sh code>, mais il devrait être / bin / sh code>. Le message d'erreur que UNIX donne n'est pas particulièrement clair sur quel programme il ne peut pas trouver. P>
L'exécutable: et assurez-vous de sauvegarder votre fichier au format de fichier UNIX. Et: Vérifiez si votre partition est exécutable (montage). P> p>
Pour ajouter à la réponse de Martin, vous dites que vous enregistrez le fichier dans votre répertoire personnel et l'exécuter comme L'astérisque à côté du nom du fichier signifie que le fichier est exécutable. p> ./ test code>. Cela ne fonctionnera que si votre répertoire de travail actuel est identique à votre répertoire personnel. P>
Eh bien, je suis actuellement dans mon annuaire à domicile.
@Waffles: Si la réponse de Martin n'a pas aidé et que vous êtes dans le même répertoire où le fichier est situé ... Êtes-vous sûr de disposer de / bin / sh code> programme? Il peut être / bin / zsh code> ou '/ bin / bash` selon le système exactement de type UNIX que vous exécutez.
Tout ce qui peut raisonnablement être appelé Unix a une coquille Bourne ou Posix comme / bin / sh code>, même si la coque préférée est autre chose comme / bin / bash code> ou ou ou ou ou / bin / ksh code>.
@Gilles: Eh bien, à moins que vous ne soyez mal au système, que les gaufres peuvent faire sa question :)
Quand Si le fichier est passé par une machine Windows, assurez-vous qu'il n'y a pas de retour de chariot parasite à la fin de la ligne, car CR ferait partie du nom du fichier d'interprétation. Vous pouvez vérifier avec ./ test code> est un script exécutable et pourtant l'exécuter, il donne le message d'erreur ./ test: commande non trouvée code>, vérifiez que l'interprète existe. Vous devez donner un chemin absolu (la variable d'environnement code> code> n'est pas utilisée). P>
0d 0a code>, il y a un CR et vous devez le supprimer (vous devrez peut-être supprimer CR des autres lignes). P >
C'est très étrange en effet. Les étapes que vous décrivez auraient dû travailler, il doit donc y avoir une petite erreur dans votre environnement ou l'exécution de ces étapes. Vous pouvez faire certaines choses pour aider à diagnostiquer ceci:
Vérification des caractères de contrôle P>
Ce que vous avez documenté a l'air bien, tant qu'il n'y a pas de fautes de frappe ni de caractères de contrôle. Vous devez vérifier en tapant: p> si vous voyez un texte supplémentaire inattendu qui pourrait expliquer le problème. Par exemple, "^ m" à la fin d'une ligne indiquerait que votre éditeur enregistre le fichier au format Windows. P> régénérer le fichier de manière fiable p> pour créer un bien connu ./ Test2 code>, Copiez-coller les commandes ci-dessous: p> vérifiant quelle commande ne peut pas être trouvée p> si vous tapez. .. p> ... obtenez-vous exactement ... p> ... Comme vous l'avez décrit avec ./ test code>? Je viens de faire le nom Ajio afin que cela ne devrait pas exister. S'ils sont des messages correspondent, cela ne vous dit rien de nouveau. Mais si les messages diffèrent, cela confirme que Il est également possible que votre version de comparer à une autre coque p> s'il y a un problème avec le / BIN / SH Installation / Initialisation, vous pourriez peut-être le contourner en invoquant une autre coquille. Essayez ... P> ./ test code> a été au moins trouvé et exécutable. P> SH code> essaie Pour vous dire que Test code> ne peut pas être trouvé, mais lors de l'exécution de Test code> une commande que la coque a essayé de fonctionner est introuvable. Cela ne devrait pas être la commande ECHO, comme avec la plupart des implémentations shell qui seront une commande interne, implémentées à l'intérieur de la coquille. Mais, la coquille peut exécuter un script d'initialisation contenant une ligne spécifiant une commande qu'il ne peut pas exécuter. Si vous exécutez man sh code>, il vous indiquera à propos de tous les différents fichiers de démarrage que votre shell pourrait essayer d'exécuter. Celles-ci peuvent être différentes de celles utilisées lorsque vous démarrez la coquille de manière interactive. Mais, en tant que débutant, il peut être intimidant de vérifier la validité de ces scripts. Il est probable que toutes les fausses personnalisations soient dans votre processus de démarrage de shell personnel, et ne pas affliger l'ensemble de l'installation Linux, alors exécutez ls -ld ~ /.*4/ code> pour répertorier les fichiers cachés de votre répertoire personnel, et inspectez-vous qui ressemble à des fichiers de démarrage shell (par exemple, ~ / .BASHRC, ~ / .profile, ~ / .bash_login). Vérifiez toutes les commandes qu'ils spécifient peuvent être trouvées avec lesquelles et sont invoquées après que la variable de chemin est définie pour inclure leur emplacement. P> #!/bin/csh
echo HELLO
Grand conseil. J'ai vérifié la page man, et je pense qu'il peut être raccourci Cat -T Code>, qui est identique à ce que CAT -VT code>.
Utilisation de CAT -VT CODE> Pour détecter que mon fichier de script avait des terminaisons de ligne Windows incorrectes enregistrées le jour. Merci.
J'ai eu le même problème où j'ai copié le fichier de Windows en Linux et j'ai essayé de l'exécuter. J'ai fait toutes les suggestions ci-dessus, mais rien n'aidé jusqu'à ce que je n'ai fait de Dos2unix sur le dossier et que cela a résolu. Ce n'est peut-être pas le cas pour vous, mais il suffit de le mettre là-bas p>
J'ai eu un problème similaire avec une ancienne machine virtuelle SCO openServer 5.0.7. M'a conduit noix que je ne pouvais pas courir certains scripts qui ont commencé avec p>
"#! / bin / bash" p>
(moins les citations, bien sûr) tout en lisant les discussions ici, il me leva pour vérifier si / bin / bash existait même. S'avère qu'il manquait. J'ai installé à partir d'un CD Skunkware2000 et tout allait bien. P>
Tout d'abord, vérifiez si / bin / sh est présent, sinon c'est votre problème. p>
Si vous avez installé / bin / sh installé, je pense que cela se produit si votre chemin n'est pas correctement configuré.
Dans ce cas, vous pouvez essayer: Essayez également / bin / sh test.sh code> dans le répertoire de travail actuel où le test.sh est situé. p>
dos2unix test.sh code> si vous avez copié le fichier de Windows. P>
Essayez chmod u + x ./test p>
Je le sais à partir d'ici: http://www.linuxquesquesttions.org/questions/red-hat-31/Running-Shell-script-command-not-found-202062/ P>
Est-ce que
ls / bin / sh code> montre un fichier avec le bit exécutable activé?Lorsque vous ajoutez la barre oblique manquante, rencontrez-vous toujours le problème? Le répertoire est-il monté avec des options (très) particulières?