我创建了一个 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.sh
bash 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 提供的示例:))这可能会导致错误。