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