为什么有人会在 shell 脚本中使用两个 shebang?

Why would someone use two shebangs in a shell script?

我继承了一个中等规模的脚本集合,其中一些以两个 shebang 开头,如下所示:

#!/bin/sh
#!/bin/bash
[do stuff]

使用这个结构是否有正当理由?

根据我的经验,任何 Unix 只会将第一行视为 shebang,第二行将是脚本的第一行,sh 解释器会将其视为注释而忽略。我应该认为这是程序员的错误吗?如果我简单地删除第二个 shebang,兼容性或便携性有什么不同吗?

你是对的:有两条 shebang 行是没有用的。只会使用第一个。

可能是之前的一些自动化重构的错误。只需查看您的修订控制系统——我绝​​对确定无论是谁做的,都会留下清晰详细的评论来解释他们的理由。