启动脚本时出错:执行shell脚本时没有这样的文件或目录



我刚刚遇到了与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中可能不是一个好主意(出于安全原因)

最新更新