为什么我无需 x 权限仍可以执行 bash 文件?

为什么我无需 x 权限仍可以执行 bash 文件?

我创建了一个 bash 文件“my_sh.sh”。默认情况下它没有 x 权限:

-rw-rw-r-- 1 amin amin 37 Mar 12 00:45 my_sh.sh

但我可以运行它而没有任何问题或警告!为什么?

amin@ubuntu:~/newDIR$ bash my_sh.sh

答案1

./my_sh.shbash my_sh.sh

./my_sh.sh告诉内核它是一个脚本,然后查看第一行(shebang #!)并使用所述解释器(?)来运行该脚本,它需要内核具有可执行权限才能执行此操作。编辑:这将启动另一个进程,因为我们正在启动一个新实例

bash my_sh.sh要求 bash 运行脚本,而不太关心第一行。因此(如果我错了请纠正我)它只需要 bash 的读取权限即可运行它

请注意,我们可以编写许多其他脚本,就像.sh脚本一样,例如 python:

python my_py.py不同于./my_py.py(<= 假设你有正确的shebang)

正如评论中所述,在编写脚本文件时,省略 shebang 行,脚本将使用当前 shell 环境,如果脚本使用不同的 shell,即脚本使用ksh但您的 shell 环境是bash(感谢 Sergiy Kolodyazhnyy 提供的示例:))这可能会导致错误。

相关内容