Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.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
Bash 为什么这个sh shebang不起作用?_Bash_Sh_Shebang - Fatal编程技术网

Bash 为什么这个sh shebang不起作用?

Bash 为什么这个sh shebang不起作用?,bash,sh,shebang,Bash,Sh,Shebang,在以下保存为script.sh的脚本中: 然后,当我尝试在bash shell中运行命令script.sh时,出现错误bash:script.sh:command not found。为什么这不能像预期的那样起作用?如果任何脚本的第一行以开始!前缀,则行上的以下路径被解释为命令,对吗?供您参考,即使我将第一行更改为/bin/bash,仍然发生相同的错误。如果以sh script.sh或bash script.sh的形式运行脚本,则脚本将按预期运行 有没有办法通过点击script.sh来运行脚本

在以下保存为script.sh的脚本中:

然后,当我尝试在bash shell中运行命令script.sh时,出现错误bash:script.sh:command not found。为什么这不能像预期的那样起作用?如果任何脚本的第一行以开始!前缀,则行上的以下路径被解释为命令,对吗?供您参考,即使我将第一行更改为/bin/bash,仍然发生相同的错误。如果以sh script.sh或bash script.sh的形式运行脚本,则脚本将按预期运行

有没有办法通过点击script.sh来运行脚本

还有一个问题,在sh和bash之间,我应该使用哪一个?我使用的是OSX10.8,我的默认shell当前设置为bash,但我不知道接下来应该使用哪一个


谢谢。

首先,使脚本可执行:

chmod u+x script.sh
其次,当前目录不在$PATH中。因此,您必须使用相对路径运行脚本,这样就足够了:

./script.sh

首先,使脚本可执行:

chmod u+x script.sh
其次,当前目录不在$PATH中。因此,您必须使用相对路径运行脚本,这样就足够了:

./script.sh

您可以使用./script.sh执行它。它将检查第一行,以知道哪个二进制文件将执行它,在本例中为/bin/sh。脚本很可能不在$PATH中的目录中。当我执行它时,我得到了一个权限错误。然后试着用sudo运行它,它仍然不起作用,因为sudo本身被解释为一个命令。所以我更改了权限,以便在没有sudo的情况下执行它,然后脚本工作了。但是,当我想在不指定任何命令的情况下执行某些文件时,是否必须更改权限?您可以使用./script.sh执行它。它将检查第一行,以知道哪个二进制文件将执行它,在本例中为/bin/sh。脚本很可能不在$PATH中的目录中。当我执行它时,我得到了一个权限错误。然后试着用sudo运行它,它仍然不起作用,因为sudo本身被解释为一个命令。所以我更改了权限,以便在没有sudo的情况下执行它,然后脚本工作了。但是,当我想在不指定任何命令的情况下执行某些文件时,是否必须更改权限?