配置或库shell脚本需要shebang吗?

Pat*_*ick 2 bash shell shebang

如果我在我的主脚本(有shebang)中包含了一个配置文件(shell脚本中的变量定义)或库文件(具有常见的函数定义),那么我是否还需要一个shebang用于该配置shell脚本?

编辑:我使用包含配置文件.或源主文件包含#!/ bin/sh shebang.

cda*_*rke 6

取决于你如何称呼它.然后使用source.命令no,如果仅使用脚本名称将它们作为子进程调用,则为yes.

根据您的描述,您正在"搜索"文件,所以不,#!只是一个评论.从这些文件中删除执行访问权限也是谨慎的,因此它们不会被无意中称为子进程.

(如果它们不是"来源"那么定义只会在子进程中发生并且无用)

编辑@triplee评论:

可以使用(例如)sh filename,bash filename甚至(shudder)将它们作为子进程调用csh filename.所有这些shell都有差异,因此行的一个优点#!是作为注释指示代码所针对的shell类型.我不会这样做,因为它也暗示它可以作为一个孩子运行.我确定你已经充分评论了你的代码,但是可能值得添加注释来指示shell.

  • 同样,如果您总是用`sh script`或`bash script`显式调用脚本,则显然会忽略shebang。也许还指出两者是不同的。即使是bash的符号链接,sh的行为也不同。 (2认同)