我有一个主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',主人和下标来运行所有这些,但是没有更改她的行,因为有很多这样的脚本。有没有办法做到这一点?
答案 0 :(得分:5)
明确调用解释器:
bash ./master.sh
请注意,shebang行对使用source
运行的脚本没有影响。该命令总是在当前shell进程中执行脚本,因此它使用当前正在运行的任何解释器。
但这一切似乎都很危险。如果有人写#!/bin/sh
而不是#!/bin/bash
,则可能依赖于sh
语法,如果使用bash
则会违反该语法。