1

http://www.unix.com/shell-programming-scripting/84684-getting-no-such-file-directory-while-executing-shell-script.htmlで説明されているのと同じ問題が発生しました

ユーザーからの質問:「取得しています:シェルスクリプトの実行中にそのようなファイルまたはディレクトリはありません。しかし、対応するパスに対応するファイルがあります。実行可能権限もあります。」

回答:「スクリプトを/ directory / scriptnameまたは./scriptnameで開始しましたか?」

「./scriptname」を使用してスクリプトを開始すると、これは機能しました。このスクリプトを複数のサーバーで開始し、一部のマシンでは「scriptname」を使用でき、他のマシンでは「./scriptname」を使用する必要がありました。一部のマシンでは「./」が必要ですが、他のマシンでは必要ないのはなぜですか。すべてのマシンで、ファイルのアクセス許可は同じです。

4

1 に答える 1

2

現在のディレクトリ ( .) が にあるPATH場合は、スクリプトを両方の方法で実行できます。

script.sh        # Shell will look for the script.sh in
                 # every directory listed in $PATH

./script.sh      # Shell will invoke the script.sh located
                 # in the current directory.

現在のディレクトリが にない場合はPATH、次のように実行する必要があります。

./script.sh

これは、シェルがこのスクリプトを見つける場所がわからないためです。親フォルダーはPATH. で呼び出すと、./シェルにそれを見つける場所が通知されます。

現在のディレクトリを に追加するにはPATH、次のコマンドを発行します。

$ export PATH=$PATH:.

リストはコロンで区切られています。上記は、「新しいパスは、現在のディレクトリ ( .) を追加した古いパスと同じになる」ことを意味します。

編集: @Cyrille コメントに注意してください - を入れること.PATHお勧めできません (セキュリティ上の理由から)。

于 2013-03-21T09:00:25.033 に答える