it-swarm.com.de

127 Rückgabecode von $?

Was bedeutet der Rückgabewert 127 von $? in UNIX.

259

Wert 127 wird zurückgegeben von /bin/sh, wenn der angegebene Befehl nicht in Ihrer Systemvariablen PATH gefunden wird und es sich nicht um einen integrierten Shell-Befehl handelt. Mit anderen Worten, das System versteht Ihren Befehl nicht, da es nicht weiß, wo die Binärdatei zu finden ist, die Sie aufrufen möchten.

382
Oldskool

Im Allgemeinen bedeutet es:

127 - Befehl nicht gefunden

es kann aber auch bedeuten, dass der Befehl gefunden wird,
aber eine Bibliothek, die für den Befehl erforderlich ist wird NICHT gefunden.

52
okigan

127 - command not found

beispiel: $ caat Die Fehlermeldung wird

bash:

caat: Befehl nicht gefunden

jetzt prüfst du mit echo $?

10
Anitha Mani

Eine Shell-Konvention besagt, dass eine erfolgreiche ausführbare Datei mit dem Wert 0 beendet werden sollte. Alles andere kann als ein Fehler in irgendeiner Form auf Seiten der Bash oder der gerade ausgeführten ausführbaren Datei interpretiert werden. Siehe auch $ PIPESTATUS und den Abschnitt EXIT STATUS auf der bash-Manpage:

   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

Es hat keine besondere Bedeutung, außer dass der letzte Prozess, der beendet wurde, dies mit einem Beendigungsstatus von 127 tat.

Sie wird jedoch auch von bash verwendet (vorausgesetzt, Sie verwenden bash als Shell), um Ihnen mitzuteilen, dass der Befehl, den Sie ausführen wollten, nicht ausgeführt werden konnte (d. H. Nicht gefunden wurde). Es ist jedoch leider nicht sofort ableitbar, ob der Prozess mit dem Status 127 beendet wurde oder nicht gefunden werden konnte.

BEARBEITEN:
Nicht sofort ableitbar, außer für die Ausgabe auf der Konsole, aber dies ist ein Stapelüberlauf. Ich gehe also davon aus, dass Sie dies in einem Skript tun.

7
falstro

Wenn Sie versuchen, ein Programm mit einer Skriptsprache auszuführen, müssen Sie möglicherweise den vollständigen Pfad der Skriptsprache angeben nd die auszuführende Datei. Zum Beispiel:

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

Wenn die IBM Mainframe-JCL am Ende des Namens des aufzurufenden Unix-Skripts einige zusätzliche Zeichen oder Zahlen enthält, kann ein solcher Fehler auftreten.

0
Smart Coder

Dieser Fehler täuscht auch manchmal. Es heißt, dass die Datei nicht gefunden wird, obwohl sie tatsächlich vorhanden ist. Dies kann an ungültigen, nicht lesbaren Sonderzeichen liegen, die in den Dateien enthalten sind und durch den von Ihnen verwendeten Editor verursacht werden können. Dieser Link kann Ihnen in solchen Fällen helfen.

- bash: ./my_script:/bin/bash ^ M: falscher Interpreter: Keine solche Datei oder Verzeichnis

Der beste Weg, um herauszufinden, ob es sich um ein Problem handelt, besteht darin, einfach eine Echo-Anweisung in die gesamte Datei einzufügen und zu überprüfen, ob derselbe Fehler ausgegeben wird.

0
Rama Sastry