GNU/Linux >> Linux の 問題 >  >> Linux

$PATH の SH スクリプトが Linux Alpine 3.11 で見つからない

あなたの対話型シェルは dash です (sh になりすます )。 dash シェルは言う

sh: /usr/local/bin/wait-for: not found

障害のある #! を持つスクリプトを実行しようとしたとき -見つからないインタープリターを指している行。 起こる 入力したコマンドが見つからない場合に発生するエラーとまったく同じであるため、$PATH であると考えるのは簡単です。 問題(この場合ではありません)。その他のシェルには、より有益なエラー メッセージがあります (bash そして zsh 「悪いインタープリター:そのようなファイルまたはディレクトリはありません」と表示され、実行しようとしたインタープリターも示されます)。

ファイルは DOS テキスト ファイルなので、#! -line はシェルに /bin/sh\r でスクリプトを実行するように指示します 、ここで \r は、DOS テキスト ファイルの行末の一部であるキャリッジ リターン文字の一般的な表現です。 Unix システムでは、キャリッジ リターンは「通常の文字」であり、行末の一部ではありません。つまり、/bin/sh\r を開始しようとします。 スクリプトを実行し、そのファイルが存在しないため失敗します。したがって、インタプリタです。 それは「見つかりません」であり、スクリプト自体ではありません。

explicit でスクリプトを実行する インタプリタは #! をバイパスします -line、常に、それを行ったときにエラーが発生しないのはそのためです。ただし、スクリプトの各行の最後に改行が残っているため、状況によってはスクリプトが誤動作する可能性があります。

ファイルを Unix テキスト ファイルとして再保存するか、dos2unix で変換するだけです。 、あなたの問題を解決します。


Linux
  1. $ pathにあるスクリプトの同じディレクトリの下にあるファイルを参照しますか?

  2. dos2unix:コマンドが見つかりません

  3. nano:コマンドが見つかりません

  1. chmod:コマンドが見つかりません

  2. 並べ替え:コマンドが見つかりません

  3. sed:コマンドが見つかりません

  1. mkfs:コマンドが見つかりません

  2. png.h ファイルが見つかりません - Linux

  3. シェル スクリプトで Linux を使用してテンプレートを作成しますか?