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

我有一个主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’,主人和下标来运行所有这些,但是没有更改她的行,因为有很多这样的脚本.有没有办法做到这一点?

最佳答案
明确地调用解释器:

bash ./master.sh

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

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

转载注明原文:bash – 如何递归覆盖shell脚本中的sha bang解释器? - 代码日志