web-dev-qa-db-ja.com

127 $からの戻りコード

$からの戻り値127の意味は何ですか? UNIXの場合.

241

指定されたコマンドがシステム変数PATH内に見つからず、組み込みシェルコマンドでもない場合、値127が/bin/shによって返されます。言い換えれば、システムはあなたのコマンドを理解していません、なぜならそれはあなたが呼び出そうとしているバイナリを見つける場所を知らないからです。

359
Oldskool

一般的には

127 - コマンドが見つかりません

しかし、それはまたコマンドが見つかるを意味することもできます
しかし、コマンドに必要なライブラリ見つかりません

47
okigan

127 - command not found

例:$ caatエラーメッセージは

bash:

caat:コマンドが見つかりません

今あなたはecho $?を使ってチェックします

10
Vidya

シェルの慣例では、成功した実行可能ファイルは値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.
9
apbianco

最後の終了プロセスが終了ステータス127で終了したこと以外に、特別な意味はありません。

しかし、それはまたあなたが実行しようとしたコマンドが実行できなかった(すなわちそれが見つからなかった)ことをあなたに伝えるためにbashによっても使用されます(あなたがシェルとしてbashを使用していると仮定)。プロセスがステータス127で終了した場合、または見つからなかった場合でも、残念ながらすぐには差し引かれません。

編集:
コンソール上の出力以外は直ちに差し引かれるわけではありませんが、これはスタックオーバーフローなので、スクリプトで実行していると思います。

7
falstro

スクリプト言語を使用してプログラムを実行しようとしている場合は、スクリプト言語のフルパスおよび実行するファイルを含める必要があるかもしれません。例えば:

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

IBMメインフレームJCLが呼び出されているunixスクリプトの名前の最後にいくつかの余分な文字または数字がある場合、それはそのようなエラーを投げることができます。

0
Smart Coder

このエラーも時には欺くことです。ファイルが実際に存在していても、ファイルが見つからないということです。ファイルに無効な読めない特殊文字が含まれているために、使用しているエディタが原因である可能性があります。このリンクはそのような場合にあなたを助けるかもしれません。

- bash:./my_script:/ bin/bash ^ M:悪いインタプリタ:そのようなファイルやディレクトリはありません

それがこの問題であるかどうかを調べる最善の方法は、単純にファイル全体にechoステートメントを置き、同じエラーがスローされるかどうかを確認することです。

0
Rama Sastry