Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix 启动脚本时出错:执行shell脚本时没有此类文件或目录_Unix - Fatal编程技术网

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

Unix 启动脚本时出错:执行shell脚本时没有此类文件或目录,unix,Unix,我刚刚遇到了与上描述的相同的问题 用户提问:“我在执行shell脚本时没有得到这样的文件或目录。但是我在相应的路径中有相应的文件。它也有可执行的权限。” 回答:“您的脚本是以/directory/scriptname还是/scriptname开头的?” 当我使用“/scriptname”启动脚本时,这就起到了作用。我在多台服务器上启动了这个脚本,在一些机器上我可以只使用“scriptname”,在其他机器上我需要使用“../scriptname”为什么有些机器上需要“../”而在其他机器上不需要

我刚刚遇到了与上描述的相同的问题

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

回答:“您的脚本是以/directory/scriptname还是/scriptname开头的?”

当我使用“/scriptname”启动脚本时,这就起到了作用。我在多台服务器上启动了这个脚本,在一些机器上我可以只使用“scriptname”,在其他机器上我需要使用“../scriptname”为什么有些机器上需要“../”而在其他机器上不需要“../”呢?在所有计算机上,文件权限都相同。

如果当前目录(
)位于
路径中,则可以通过两种方式运行脚本:

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.
如果当前目录不在
路径中
,则必须按如下方式运行:

./script.sh
这是因为shell不知道在哪里可以找到这个脚本-它的父文件夹不在
路径中。使用
/
调用它会告诉shell在哪里可以找到它

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

$ export PATH=$PATH:.
列表是冒号删除的,上面的co表示“新路径将与旧路径相同,添加当前目录(
)”


编辑:注意@Cyrille注释-将
放在
路径中可能不是一个好主意(出于安全原因)。

放在
$PATH
()中也是一种不好的做法。但是,您可以将脚本放在定义的目录中,并将此目录添加到
$PATH