$からの戻り値127の意味は何ですか?UNIX。
$からの戻り値127の意味は何ですか?UNIX。
回答:
値127は/bin/sh
、指定されたコマンドがPATH
システム変数内に見つからず、組み込みのシェルコマンドではない場合に返されます。言い換えると、システムはあなたのコマンドを理解していません。なぜなら、あなたが呼び出しようとしているバイナリをどこで見つけるべきか知らないからです。
which [program]
して、OSが使用しているバイナリを確認できます。空になった場合、次のステップは実行ビットとパスをチェックすることです。
which
は特に正確ではありません。エイリアス、シェル関数、PATHルックアップメモ化、またはシェル状態の内部の他の要素については認識していません。type
これらすべてのことを知っている組み込みのシェルであるを使用する方がはるかに優れています。
126
(Permission denied
)を取得し127
ますが、実行可能ではないファイルを(その内容に関係なく)呼び出そうとしたときではありません。同様に、ディレクトリを実行しようとしても126
(is a directory
)になります。
シェルの規則では、成功した実行可能ファイルは値0で終了する必要があります。それ以外は、bashまたは実行したばかりの実行可能ファイルの一部で、なんらかの失敗として解釈できます。$ PIPESTATUSおよびbash manページの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.
このエラーも時々だまされています。ファイルが実際に存在していても、ファイルが見つからないというメッセージが表示されます。使用しているエディターが原因でファイルに存在する無効な読み取り不可能な特殊文字が原因である可能性があります。このリンクは、このような場合に役立ちます。
-bash:./my_script:/ bin / bash ^ M:悪いインタープリター:そのようなファイルやディレクトリはありません
これがこの問題かどうかを確認する最良の方法は、ファイル全体にエコーステートメントを単純に配置し、同じエラーがスローされるかどうかを確認することです。