启动脚本:命令“exec”和“bash”之间的区别?

Wob*_*ows 4 bash shell-script

bw 有什么区别:

  1. exec script.sh 和
  2. bash script.sh

假设 script.sh 已设置所有适当的读取/执行权限?

l0b*_*0b0 7

exec script.sh 将当前 shell替换为 的 shebang 行中定义的 shell script.sh,并使用该解释器运行文件的其余部分。这可以是从/bin/sh到 的任何内容/usr/bin/python,无论文件扩展名是什么。为此,script.sh必须是可执行的。这样做的副作用之一是,script.sh完成后 shell 也会退出。如果是交互式终端,终端也会退出。

bash script.sh使用新的bashshell 来解释script.sh,独立于 shebang 行。也就是说,如果存在 shebang 行,它将被忽略。script.sh不必可执行即可以这种方式运行。

  • @fra-san,是吗?嗯。嗯,Ksh 也是如此,所以它可能是从那里继承的。无论如何,重点是,据我测试,“exec script.sh”首先查看“PATH”,并且仅查看“PATH”,而“bash script.sh”首先查看当前目录,然后查看“PATH” `。 (2认同)