shell 脚本中的相对路径应该以点开头吗?

shell 脚本中的相对路径应该以点开头吗?

./我经常看到,并且在某种程度上采用了自己的做法,在 shell 脚本中将相对路径放在前面。但有没有一种情况

source ./foo/helper.sh

source foo/helper.sh

实际上会产生不同的结果吗?这个“约定”有什么道理吗?

答案1

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

这两者应该是等价的。但这两个不是,无论如何也不在 Bash 中:

source ./helper.sh
source   helper.sh

原因是,对于普通文件名,source将首先查看目录$PATH,但对于包含斜杠的文件名,则不会发生这种情况。如果helper.sh当前目录和 in 中都有 a $PATH,则第一个将查找前者,第二个将查找后者。

类似的考虑可能适用于其他程序,因此 write./foo而不是foo明确表示您指的是当前目录中的文件,而不是通过其他方式查找的文件。

相关内容