用户提问:“我收到:执行shell脚本时没有这样的文件或目录。但我在相应的路径中有相应的文件。它还具有可执行权限。”
答案:“您是否使用/ directory / scriptname或./scriptname启动脚本?”
一旦我使用“./scriptname”启动脚本,这就适用了。我在多个服务器上启动了这个脚本,在某些机器上我可以使用“scriptname”而在其他机器上我需要使用“./scriptname”为什么某些机器上需要“./”而其他机器上却不需要?在所有计算机上,文件权限都相同。
答案 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
中可能不是一个好主意(出于安全原因)。