367 votes

127 Code de retour de $ ?

Quelle est la signification de la valeur de retour 127 de $ ? dans UNIX.

525voto

Oldskool Points 10023

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

74 votes

Cela se produit également si un bash script n'a pas le mode "+x" mais existe bel et bien.

4 votes

Vous pouvez essayer d'utiliser which [program] pour voir quel binaire le système d'exploitation utilise. Si le résultat est vide, l'étape suivante consiste à vérifier le bit d'exécution et le PATH.

10 votes

@cr125rider, 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. Il est préférable d'utiliser type un module intégré au shell qui connaît toutes ces choses.

77voto

okigan Points 355

En général, cela signifie :

127 - commande non trouvée

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

23voto

Vidya M Points 331

127 - command not found

exemple : $caat Le message d'erreur sera

bash : caat : commande non trouvée

maintenant vous vérifiez en utilisant echo $ ?

12voto

apbianco Points 54

Une convention de l'interpréteur de commandes est qu'un exécutable réussi doit sortir avec la valeur 0. Toute autre valeur peut être interprétée comme un échec quelconque, de la part de bash ou de l'exécutable qui vient de s'exécuter. Voir aussi $PIPESTATUS et le STATUT DE SORTIE de la page de manuel de bash :

Pour les besoins de l'interpréteur de commandes, une commande qui sort avec un état de sortie nul a réussi. Un état de sortie de zéro indique un succès. Un état de sortie différent de zéro indique un échec. Lorsqu'une commande se termine sur un signal fatal N, bash utilise la valeur 128+N comme état de sortie.

   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.

9voto

falstro Points 16545

Il n'a pas de signification particulière, si ce n'est que le dernier processus à quitter l'a fait avec un état de sortie de 127.

Cependant, il est également utilisé par bash (en supposant que vous utilisez bash comme interpréteur de commandes) 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 été trouvée). Il n'est malheureusement pas possible de déduire immédiatement si le processus a quitté avec le statut 127, ou s'il n'a pas été 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 faites cela dans un script.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X