$からの戻り値127の意味は何ですか? UNIXの場合.
指定されたコマンドがシステム変数PATH
内に見つからず、組み込みシェルコマンドでもない場合、値127が/bin/sh
によって返されます。言い換えれば、システムはあなたのコマンドを理解していません、なぜならそれはあなたが呼び出そうとしているバイナリを見つける場所を知らないからです。
一般的には
127 - コマンドが見つかりません
しかし、それはまたコマンドが見つかるを意味することもできます
しかし、コマンドに必要なライブラリ見つかりません。
127 - command not found
例:$ caatエラーメッセージは
bash:
caat:コマンドが見つかりません
今あなたはecho $?
を使ってチェックします
シェルの慣例では、成功した実行可能ファイルは値0で終了する必要があります。それ以外のものは、bashの一部または実行したばかりの実行可能ファイルの一部として、何らかの障害として解釈できます。 bashのマニュアルページの$ PIPESTATUSおよびEXIT STATUSのセクションも参照してください。
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.
最後の終了プロセスが終了ステータス127で終了したこと以外に、特別な意味はありません。
しかし、それはまたあなたが実行しようとしたコマンドが実行できなかった(すなわちそれが見つからなかった)ことをあなたに伝えるためにbashによっても使用されます(あなたがシェルとしてbashを使用していると仮定)。プロセスがステータス127で終了した場合、または見つからなかった場合でも、残念ながらすぐには差し引かれません。
編集:
コンソール上の出力以外は直ちに差し引かれるわけではありませんが、これはスタックオーバーフローなので、スクリプトで実行していると思います。
スクリプト言語を使用してプログラムを実行しようとしている場合は、スクリプト言語のフルパスおよび実行するファイルを含める必要があるかもしれません。例えば:
exec('/usr/local/bin/node /usr/local/lib/node_modules/uglifycss/uglifycss in.css > out.css');
IBMメインフレームJCLが呼び出されているunixスクリプトの名前の最後にいくつかの余分な文字または数字がある場合、それはそのようなエラーを投げることができます。
このエラーも時には欺くことです。ファイルが実際に存在していても、ファイルが見つからないということです。ファイルに無効な読めない特殊文字が含まれているために、使用しているエディタが原因である可能性があります。このリンクはそのような場合にあなたを助けるかもしれません。
- bash:./my_script:/ bin/bash ^ M:悪いインタプリタ:そのようなファイルやディレクトリはありません
それがこの問題であるかどうかを調べる最善の方法は、単純にファイル全体にechoステートメントを置き、同じエラーがスローされるかどうかを確認することです。