仅当 cd 到脚本目录时运行 sh 文件才有效

仅当 cd 到脚本目录时运行 sh 文件才有效

我正在尝试.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

这完全忽略当前目录并 cd 到/usr/bin/foo.

答案3

.表示当前目录。只需像这样运行它:

/usr/bin/foo/bar.sh

当您在.前面放置 a 时,它会查找:

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

相关内容