在 Linux 中,我们通常在脚本中添加一个shebang 来调用相应的解释器。我尝试了以下示例。
我写了一个没有shebang且具有可执行权限的shell脚本。我能够使用 ./ 执行它。但是如果我写一个类似的python程序,没有shebang,我就无法执行它。
为什么会这样?据我了解,需要shebang找翻译。那么 shell 脚本是如何工作的,而不是 python 脚本呢?
最佳答案
这里有一个微妙的区别。如果目标是二进制文件或以 #!
shebang 行开头,则 shell 成功调用 execv
。如果目标是一个没有 shebang 的文本文件,那么对 execv
的调用将失败,shell 可以自由地尝试在 /bin/sh
或其他东西下启动它。
关于python - 在 shell 脚本中使用 shebang,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18964553/