我刚刚遇到了与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"Why is"。/"在某些机器上是必需的,但在其他机器上不是?在所有机器上,文件权限是相同的。
如果当前目录(.
)在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
中可能不是一个好主意(出于安全原因)