127 $からの戻りコード?


回答:


428

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


55
これは、bashスクリプトにモード「+ x」がなくても実際に存在する場合にも発生します。
MatthewKremer 2014年

3
を使用which [program]して、OSが使用しているバイナリを確認できます。空になった場合、次のステップは実行ビットとパスをチェックすることです。
four43 14年

10
@ cr125rider whichは特に正確ではありません。エイリアス、シェル関数、PATHルックアップメモ化、またはシェル状態の内部の他の要素については認識していません。typeこれらすべてのことを知っている組み込みのシェルであるを使用する方がはるかに優れています。
チャールズダフィー

5
これは、Windowsの改行を含むファイルでも発生しました。行末をUNIX形式に修正すると問題が解決しました
Mitkins '30

4
@MatthewKremer:実際には126Permission denied)を取得し127ますが、実行可能ではないファイルを(その内容に関係なく)呼び出そうとしたときではありません。同様に、ディレクトリを実行しようとしても126is a directory)になります。
mklement0 2015

58

一般的には次のことを意味します:

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

それはまた、コマンドがあることを意味することができます発見された
が、コマンドによって要求されたライブラリー見つかりません


14

127 - command not found

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

bash:

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

今、あなたは使用して確認します echo $?


10

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

8

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

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

編集:
コンソールの出力を除いて、すぐには推測できませんが、これはスタックオーバーフローであるため、スクリプトでこれを行っていると思います。


2

このエラーも時々だまされています。ファイルが実際に存在していても、ファイルが見つからないというメッセージが表示されます。使用しているエディターが原因でファイルに存在する無効な読み取り不可能な特殊文字が原因である可能性があります。このリンクは、このような場合に役立ちます。

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

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


1

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

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

ありがとう、これでうまくいきました。そのため、どのgsを実行し、スクリプトで出力パスを使用しました。働いた..
フアン

0

IBMメインフレームJCLが呼び出されるUNIXスクリプトの名前の末尾に余分な文字または数字がある場合、そのようなエラーがスローされる可能性があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.