web-dev-qa-db-fra.com

127 Code retour à partir de $?

Quelle est la signification de la valeur de retour 127 à partir de $? sous UNIX.

259
Sachin Chourasiya

La valeur 127 est renvoyée par /bin/sh lorsque la commande donnée n'est pas trouvée dans votre variable système PATH 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.

382
Oldskool

Généralement cela signifie:

127 - commande non trouvée

mais cela peut aussi signifier que la commande est trouvée,
mais une bibliothèque requise par la commande n'est PAS trouvée.

52
okigan

127 - command not found

exemple: $ caat Le message d'erreur

frapper:

caat: commande non trouvée

maintenant, vous vérifiez avec echo $?

10
Anitha Mani

Selon la convention du shell, l'exécutable doit sortir avec la valeur 0. Tout le reste peut être interprété comme un échec quelconque, que ce soit sur bash ou sur l'exécutable que vous venez d'exécuter. Voir aussi $ PIPESTATUS et la section EXIT STATUS de la page de manuel de bash:

   For  the Shell’s purposes, a command which exits with a zero exit status has succeeded.  An exit status
   of zero indicates success.  A non-zero exit status indicates failure.  When a command terminates  on  a
   fatal signal N, bash uses the value of 128+N as the exit status.
   If  a command is not found, the child process created to execute it returns a status of 127.  If a com-
   mand is found but is not executable, the return status is 126.

   If a command fails because of an error during expansion or redirection, the exit status is greater than
   zero.

   Shell  builtin  commands  return  a  status of 0 (true) if successful, and non-zero (false) if an error
   occurs while they execute.  All builtins return an exit status of 2 to indicate incorrect usage.

   Bash itself returns the exit status of the last command executed, unless  a  syntax  error  occurs,  in
   which case it exits with a non-zero value.  See also the exit builtin command below.
9
apbianco

Cela n'a pas de signification particulière, sauf que le dernier processus à quitter l'a fait avec un statut de sortie de 127.

Cependant, il est également utilisé par bash (si vous utilisez bash en tant que shell) pour vous informer que la commande que vous avez essayé d’exécuter ne peut pas être exécutée (c’est-à-dire qu’elle est introuvable). Malheureusement, cela n'est pas immédiatement déductible, si le processus s'est terminé avec le statut 127 ou s'il n'a pas pu être trouvé.

MODIFIER:
Pas immédiatement déductible, sauf pour la sortie sur la console, mais il s’agit d’un débordement de pile, donc je suppose que vous le faites dans un script.

7
falstro

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:

exec('/usr/local/bin/node /usr/local/lib/node_modules/uglifycss/uglifycss in.css > out.css');
1
Nick

Si le JCL de l'ordinateur central IBM comporte des caractères ou des chiffres supplémentaires à la fin du nom du script unix appelé, il peut générer une telle erreur.

0
Smart Coder

Cette erreur est parfois trompeuse. Il est indiqué que le fichier n’est pas trouvé même s’il est effectivement présent. Cela pourrait être dû à des caractères spéciaux illisibles non lisibles présents dans les fichiers qui pourraient être causés par l'éditeur que vous utilisez. Ce lien pourrait vous aider dans de tels cas.

- bash: ./my_script:/bin/bash ^ M: interprète incorrect: aucun fichier ni répertoire de ce type

Le meilleur moyen de savoir s’il s’agit de ce problème est de placer simplement une instruction echo dans l’ensemble du fichier et de vérifier si la même erreur est renvoyée.

0
Rama Sastry