使用./script.sh执行脚本失败,而“sh script.sh”工作

我很困惑这个错误,甚至不知道什么谷歌:

失败 – 执行脚本:

./test.sh bash: ./test.sh: "Permission denied" 

工作 – 而这些Apporeaches工作:

 sh ./test.sh Works bash ./test.sh Works 

testing脚本:

 cat test.sh #!/bin/bash echo "Works" 

拥有所有执行权限:

 chmod 777 test.sh ls -als test.sh 4 -rwxrwxrwx 1 edo edo 27 13. Feb 10:41 test.sh 

对于这种情况,我很无知,因为这对我没有任何意义,我也不知道Google能够正确地描述这种行为。

通过依赖shebang行来执行一个脚本与将它作为parameter passing给shell非常不同。

在前一种情况下,文件必须驻留在可执行分区上,并且必须包含到现有shell的有效shebang行。

在后一种情况下,没有必要,因为你正在调用脚本的shell负责这些事情。

请注意,您对这些testing不使用相同的shell:第一个推断bash,而第二个使用sh。

我的猜测是脚本所在的分区不允许执行; mount -v会告诉你这是否是这种情况。