我在CentOS下写了一个bash脚本,执行得很好。在另一台电脑上,这是错误的。我刚开始忘记了shebang,但为什么我的电脑好呢? 我认为这是一个非常初学的问题,但我试了一下。感谢。
更新: 出现了另一个问题。使用 ./ filename.sh 和 sh filename.sh 执行有什么区别?
答案 0 :(得分:4)
在脚本开头没有shebang会在调用脚本时在当前运行的任何shell中执行它。如果您确定该脚本将从bash启动,而不是从任何其他shell(ksh,csh等)启动,则不需要shebang,因为将启动相同的解释器。
答案 1 :(得分:4)
如果您的脚本execve
失败,将会使用/bin/sh
。在一个系统/bin/sh
上可能是POSIX sh
,在另一个系统上它可能是bash
的别名;您的脚本可能依赖于bash
功能。