/bin
私のディレクトリには、次の行を含むシェルスクリプトがありますplay applause.mp3
。このファイルはapplause.mp3
実行可能ファイルと同じディレクトリにあります。
ただし、playコマンドでエラーが発生しましたplay FAIL formats: can't open input file 'applause.mp3': No such file or directory
。
ディレクトリから直接ファイルを開くとうまく再生されます/bin
。ファイルがディレクトリ以外の場所に.mp3
ある必要があることは明らかです。/bin
Bashはどこでファイルを探しますか?
ベストアンサー1
PATH
Bashは、環境変数で指定されたディレクトリで実行するコマンドを探します。
しかし、あなたのシナリオでは、bashはすでにタスクを実行し、play
コマンドを実行しました。applause.mp3
パラメータとして渡されます。それはすべて、play
コマンドがそれをどのように解釈するかによって異なります。
コマンドがファイル名引数を使用する一般的な場合は、現在のディレクトリから始まるパスを確認します(これがスクリプトを/bin
呼び出す前にディレクトリをに変更したときに機能する理由です)。
/
問題を回避するには、パラメータに絶対パス(次から始まる)を使用する必要があります。