Was bedeutet der Rückgabewert 127 von $? unter UNIX.
291
Der Wert 127 wird zurückgegeben, /bin/sh
wenn der angegebene Befehl nicht in Ihrer PATH
Systemvariablen gefunden wird und es sich nicht um einen integrierten Shell-Befehl handelt. Mit anderen Worten, das System versteht Ihren Befehl nicht, weil es nicht weiß, wo sich die Binärdatei befindet, die Sie aufrufen möchten.
which [program]
zu sehen, welche Binärdatei das Betriebssystem verwendet. Wenn es leer ist, überprüfen Sie im nächsten Schritt das Ausführungsbit und den Pfad.which
ist nicht besonders genau - es kennt keine Aliase, Shell-Funktionen, PATH-Lookup-Memoization oder andere Faktoren innerhalb des Shell-Status. Viel besser zu bedienentype
, eine Shell eingebaut, die über all diese Dinge Bescheid weiß.126
(Permission denied
), nicht127
wenn ich versuche, eine nicht ausführbare Datei aufzurufen (unabhängig von deren Inhalt); In ähnlicher Weise führt ein Versuch, ein Verzeichnis auszuführen, auch zu126
(is a directory
).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 .
quelle
127 - command not found
Beispiel: $ caat Die Fehlermeldung wird angezeigt
Bash:
Jetzt überprüfen Sie mit
echo $?
quelle
Eine Shell-Konvention besagt, dass eine erfolgreiche ausführbare Datei mit dem Wert 0 beendet werden sollte. Alles andere kann als Fehler irgendeiner Art von Bash oder der gerade ausgeführten ausführbaren Datei interpretiert werden. Siehe auch $ PIPESTATUS und den Abschnitt EXIT STATUS der Bash-Manpage:
quelle
Es hat keine besondere Bedeutung, außer dass der letzte zu beendende Prozess dies mit einem Exit-Status von 127 tat.
Es 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 (dh nicht gefunden wurde). Es ist leider nicht sofort ableitbar, ob der Prozess mit dem Status 127 beendet wurde oder ob er nicht gefunden werden konnte.
BEARBEITEN : Nicht sofort ableitbar, mit Ausnahme der Ausgabe auf der Konsole, aber dies ist ein Stapelüberlauf. Ich gehe also davon aus, dass Sie dies in einem Skript tun.
quelle
Dieser Fehler täuscht auch manchmal. Es heißt, dass die Datei nicht gefunden wurde, obwohl die Dateien tatsächlich vorhanden sind. Dies kann an ungültigen, nicht lesbaren Sonderzeichen in den Dateien liegen, die 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: fehlerhafter Interpreter: Keine solche Datei oder kein solches Verzeichnis
Der beste Weg, um herauszufinden, ob es sich um dieses Problem handelt, besteht darin, einfach eine Echo-Anweisung in die gesamte Datei einzufügen und zu überprüfen, ob derselbe Fehler ausgelöst wird.
quelle
Wenn Sie versuchen, ein Programm mit einer Skriptsprache auszuführen , müssen Sie möglicherweise den vollständigen Pfad der Skriptsprache und die auszuführende Datei angeben. Zum Beispiel:
quelle
Wenn die IBM Mainframe-JCL am Ende des Namens des aufgerufenen Unix-Skripts einige zusätzliche Zeichen oder Zahlen enthält, kann dies zu einem solchen Fehler führen.
quelle