shファイルの実行は、スクリプトディレクトリにCDを移動した場合にのみ機能します。

shファイルの実行は、スクリプトディレクトリにCDを移動した場合にのみ機能します。

.sh構文を介して./file.shファイルを実行しようとしています。誤って走ることができると思いました。

./usr/bin/foo/bar.sh

しかし、以下を"No such file or directory"実行すると。

cd /usr/bin/foo && ./bar.sh

完璧に動作します。最初の方法が機能しないのはなぜですか?

(私はLubuntu 14を使用しています)

答え1

これ。ディレクトリパスの先頭は、現在の作業ディレクトリから始まる相対パスであることを示します。それ以外の場合は、ファイルシステムのルートから起動されます。

/usr/bin/foo/bar.shしたがって、前のポイントなしで実行する必要があります。
これは、ファイルと同じディレクトリにある場合にのみ必要であり、ディレクトリを追加せずにどこでも実行できる同じ名前の/ binにある既存の既存のファイルと区別するために必要です。

答え2

ポイントが重要です。

変える:

./usr/bin/foo/bar.sh

使用:

/usr/bin/foo/bar.sh

議論する

考慮する:

./usr/bin/foo/bar.sh

これは次から始まります。現在のディレクトリを選択し./てサブディレクトリを見つけますusr。現在のディレクトリに対応するサブディレクトリがない場合は、次のメッセージが表示されます。

bash: ./usr/bin/foo/bar.sh: No such file or directory

これとは対照的に、次の点を考慮してください。

cd /usr/bin/foo && ./bar.sh

これは現在のディレクトリを完全に無視し/usr/bin/foo、 。

答え3

.現在のディレクトリを表します。次のように実行してみてください。

/usr/bin/foo/bar.sh

前にaを置くと、.次のようになります。

whateverdirectory/yourein/usr/bin/foo/bar.sh

関連情報