编写一个没有shebang行的Bash脚本

Lgn*_*Lgn 5 bash

我在CentOS下写了一个bash脚本,执行得很好.在另一台电脑上,这是错误的.我刚开始忘记了shebang,但为什么我的电脑好呢?我认为这是一个非常初学的问题,但我试了一下.谢谢.

更新:弹出另一个问题.使用./filename.shsh filename.sh执行有什么区别?

Bla*_*iev 4

脚本开头没有 shebang 会在调用脚本时在当前运行的任何 shell 中执行。如果您确定脚本将从 bash 启动,而不是从任何其他 shell(ksh、csh 等)启动,则不需要 shebang,因为将启动相同的解释器。

  • “bash”实际上是唯一可以自行启动的 shell。所有其他 shell 都使用“sh”,包括“zsh”、“ksh”、“dash”以及使用“exec*p”系列函数的任何工具。 (3认同)
  • @CharlesDuffy `exec*p` 使用 `sh`。其他非`p` `exec*` 函数将会失败。它被记录在[POSIX](http://pubs.opengroup.org/onlinepubs/9699919799/functions/exec.html)。 (2认同)