1

我刚刚遇到了与http://www.unix.com/shell-programming-scripting/84684-getting-no-such-file-directory-while-executing-shell-script.html中所述相同的问题

用户提问:“我得到:执行 shell 脚本时没有这样的文件或目录。但我在相应的路径中有相应的文件。它也有可执行权限。”

回答:“你的脚本是用 /directory/scriptname 还是 ./scriptname 开始的?”

这适用于,一旦我使用“./scriptname”启动脚本。我在多台服务器上启动了这个脚本,在某些机器上我可以只使用“scriptname”而在其他机器上我需要使用“./scriptname” 为什么在某些机器上需要“./”而在其他机器上不需要?在所有机器上,文件权限都是相同的。

4

1 回答 1

2

如果当前目录 ( .) 在 中PATH,则可以两种方式运行脚本:

script.sh        # Shell will look for the script.sh in
                 # every directory listed in $PATH

./script.sh      # Shell will invoke the script.sh located
                 # in the current directory.

如果当前目录不在 中PATH,则必须像这样运行它:

./script.sh

那是因为 shell 不知道在哪里可以找到这个脚本——它的父文件夹不在PATH. 调用它会./告诉 shell 在哪里可以找到它。

要将当前目录添加到PATH,请发出以下命令:

$ export PATH=$PATH:.

该列表以冒号分隔,上面的意思是“新路径将与旧路径相同,但添加了当前目录 ( .)”。

编辑:注意@Cyrille 评论 -.加入PATH可能不是一个好主意(出于安全原因)。

于 2013-03-21T09:00:25.033 回答