启动脚本时出错:执行shell脚本时没有此类文件或目录

时间:2013-03-21 08:57:28

标签: unix

我刚遇到与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”为什么某些机器上需要“./”而其他机器上却不需要?在所有计算机上,文件权限都相同。

1 个答案:

答案 0 :(得分: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中可能不是一个好主意(出于安全原因)。