シェルスクリプトの相対パスはドットで始まる必要がありますか?

シェルスクリプトの相対パスはドットで始まる必要がありますか?

./私はシェルスクリプトで相対パスを最初に配置する慣行をよく見て、ある程度直接採用します。ところで事情があるのか

source ./foo/helper.sh

そして

source foo/helper.sh

実際には別の結果が出るのでしょうか?この「約束」に真実はありますか?

ベストアンサー1

source ./foo/helper.sh
source   foo/helper.sh

両方は同じでなければなりません。しかし、これら2つはBashにもなく、とにかくありません。

source ./helper.sh
source   helper.sh

その理由は、通常のファイル名の場合はsourceディレクトリを最初に見ていますが、$PATHスラッシュを含むファイル名の場合はこれが発生しないためです。helper.sh現在のディレクトリとに両方がaがある場合、最初は前者を探し、$PATH2番目は後者を探します。

同様の考慮事項が他のプログラムにも適用される可能性があるため、代わりに書き込みを使用すると、./foofooの方法で見つかったファイルではなく、現在のディレクトリにあるファイルを参照していることが明らかになります。

おすすめ記事