运行 Bash 脚本导致 'Bad interpreter: No such file or directory' 错误

Running a Bash script results in 'Bad interpreter: No such file or directory' error

我确实在

上找到了问题

错误的解释器:SO.

上没有这样的文件或目录

当我从

更改脚本后,我的问题也得到解决
#!/usr/bin/bash
echo -e "\t\t\e[92mHello from the Test Script!\e[39m"

至:

#!/bin/bash
echo -e "\t\t\e[92mHello from the Test Script!\e[39m"

之后 我在此处查看答案后更改了第一行。

Shell script: Bad interpreter.No such file or directory

我不明白为什么从第一行删除 /usr 会有帮助。

P.S.我正在了解 linux 文件权限,即使在使用“755”更改权限后我也无法执行我的文件。 所以,如果有人能提前给我解释一下this.Thanks。:)

那是因为 /usr/bin/bash 处没有 bash 二进制文件, bash 的正确路径是 /bin/bash.

脚本顶部的 #! 行,称为 shebang,决定了哪个程序(sh、bash、ruby、perl、python 等。 ) 用于 运行 脚本。

这篇 post 很好地涵盖了这个主题:

https://unix.stackexchange.com/questions/87560/does-the-shebang-determine-the-shell-which-runs-the-script

在您的系统上,bash shell 位于 /bin/bash 而不是 /usr/bin/bash

! 之后的路径应该是将脚本内容作为参数传递的可执行文件的路径。

您可以在 wikipedia

阅读更多相关信息

关于你问题的第二部分;权限是什么并不重要;因为文件指向错误的解释器。

有关 unix 文件权限的更多信息,我建议阅读 this entry on wikipedia

在我的例子中,在脚本名称前添加 sh 解决了问题。

您也可以通过在开头添加“./”来调用您的脚本,以防您从本地目录调用它。另一种解决方案是通过指定其完整路径来调用它。