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