Quelle est la valeur de la valeur de retour 127 de $? sous UNIX.
291
La valeur 127 est renvoyée par /bin/sh
lorsque la commande donnée est introuvable dans votre PATH
variable système et qu'il ne s'agit pas d'une commande shell intégrée. En d'autres termes, le système ne comprend pas votre commande, car il ne sait pas où trouver le binaire que vous essayez d'appeler.
which [program]
pour voir quel binaire le système d'exploitation utilise. S'il apparaît vide, l'étape suivante consiste à vérifier le bit d'exécution et le CHEMIN.which
n'est pas particulièrement précis - il ne connaît pas les alias, les fonctions du shell, la mémorisation de la recherche PATH ou d'autres facteurs internes à l'état du shell. Beaucoup mieux à utilisertype
, un shell intégré qui connaît toutes ces choses.126
(Permission denied
), pas127
lorsque j'essaie d'invoquer un fichier non exécutable (quel que soit son contenu); de même, une tentative d'exécution d'un répertoire entraîne également126
(is a directory
).Cela signifie généralement:
127 - commande introuvable
mais cela peut également signifier que la commande est trouvée ,
mais qu'une bibliothèque requise par la commande n'est PAS trouvée .
la source
127 - command not found
exemple: $ caat Le message d'erreur
frapper:
maintenant vous vérifiez en utilisant
echo $?
la source
Une convention shell est qu'un exécutable réussi doit sortir avec la valeur 0. Tout le reste peut être interprété comme un échec quelconque, de la part de bash ou de l'exécutable que vous venez d'exécuter. Voir aussi $ PIPESTATUS et la section EXIT STATUS de la page de manuel bash:
la source
Cela n'a pas de signification particulière, à part que le dernier processus de sortie l'a fait avec un statut de sortie de 127.
Cependant, il est également utilisé par bash (en supposant que vous utilisez bash comme shell) pour vous dire que la commande que vous avez essayé d'exécuter n'a pas pu être exécutée (c'est-à-dire qu'elle n'a pas pu être trouvée). Ce n'est malheureusement pas immédiatement déductible si le processus s'est terminé avec le statut 127 ou s'il n'a pas pu être trouvé.
EDIT:
Pas immédiatement déductible, sauf pour la sortie sur la console, mais c'est un débordement de pile, donc je suppose que vous le faites dans un script.
la source
Cette erreur est aussi parfois trompeuse. Il indique que le fichier est introuvable même si les fichiers sont effectivement présents. Cela pourrait être dû à des caractères spéciaux illisibles non valides présents dans les fichiers qui pourraient être causés par l'éditeur que vous utilisez. Ce lien peut vous aider dans de tels cas.
-bash: ./my_script: / bin / bash ^ M: mauvais interprète: aucun fichier ou répertoire de ce type
La meilleure façon de savoir s'il s'agit de ce problème est de simplement placer une instruction echo dans le fichier entier et de vérifier si la même erreur est levée.
la source
Si vous essayez d'exécuter un programme à l'aide d'un langage de script, vous devrez peut-être inclure le chemin d'accès complet du langage de script et le fichier à exécuter. Par exemple:
la source
Si le JCL IBM mainframe contient des caractères ou des chiffres supplémentaires à la fin du nom du script Unix appelé, il peut générer une telle erreur.
la source