如何递归覆盖shell脚本中的sha bang解释器?

时间:2016-09-01 05:15:21

标签: bash interpreter shebang

我有一个主shell脚本,它调用各种其他shell脚本中定义的函数。主脚本包含使用'source'命令的其他脚本。 我想为所有脚本使用一个通用的解释器,无论她在这些脚本中设置了什么(“#!/ bin / sh”)。我想从命令行提供该解释器。 例如:

master.sh(带#!/ bin / sh)

subscript1.sh(带#!/ bin / sh)

subscript2.sh(带#!/ bin / sh)

subscript3.sh(带#!/ bin / sh)

master.sh调用在下标中定义的函数,包含在'source subscript1.sh','source subscript2.sh'和'source subscript3.sh'中。

当我运行./master.sh时,下标按照“#!/ bin / sh”行的指示使用各自的解释器。我想使用'/ bin / bash',主人和下标来运行所有这些,但是没有更改她的行,因为有很多这样的脚本。有没有办法做到这一点?

1 个答案:

答案 0 :(得分:5)

明确调用解释器:

bash ./master.sh

请注意,shebang行对使用source运行的脚本没有影响。该命令总是在当前shell进程中执行脚本,因此它使用当前正在运行的任何解释器。

但这一切似乎都很危险。如果有人写#!/bin/sh而不是#!/bin/bash,则可能依赖于sh语法,如果使用bash则会违反该语法。