
./
私はシェルスクリプトで相対パスを最初に配置する慣行をよく見て、ある程度直接採用します。ところで事情があるのか
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がある場合、最初は前者を探し、$PATH
2番目は後者を探します。
同様の考慮事項が他のプログラムにも適用される可能性があるため、代わりに書き込みを使用すると、./foo
他foo
の方法で見つかったファイルではなく、現在のディレクトリにあるファイルを参照していることが明らかになります。