在所有bash脚本中你需要shebang吗?

时间:2011-09-30 19:55:22

标签: bash shell

假设你有一个bash脚本B,你从另一个bash脚本中获取A.B有一堆变量和函数定义。 A是主要的驱动程序脚本。你需要在A和B之上的#!/ bin / bash线吗?如果你这样做会怎么样?如果你不这样做会发生什么?

3 个答案:

答案 0 :(得分:17)

shebang仅对那些脚本是必需的,这些脚本应由操作系统以与二进制可执行文件相同的方式执行。如果您使用其他脚本,则会忽略shebang。

另一方面。如果一个脚本应该被采购,那么通常不会在开始时放置任何shebang。

答案 1 :(得分:10)

如果直接将脚本作为可执行文件运行(例如使用命令./script.sh),则使用shebang。在这种情况下,它告诉操作系统运行哪个可执行文件。

这不是必需的,如果您编写bash ./script.sh或者编写脚本,则无效。

答案 2 :(得分:1)

您应该在所有脚本中使用shebang,尤其是那些使用任何非sh兼容功能的脚本。

在Debian中,默认shell是破折号(不是bash)。如果你使用bash-only功能并且没有指定这个脚本应该由bash解释它甚至可能在linux上失败。它几乎肯定会在Solaris或HP-UX上失败。

如果您的文件只是其他脚本的来源,那么您可以省略shebang line但不设置可执行权限。对于这样的文件也可以保持/ bin / sh兼容性。

我强烈建议您阅读DashAsBinSh