调用 bash 脚本

调用 bash 脚本

有一个简单的脚本:

echo "file: $0"

当像这样调用时:

脚本文件

或者

./myscript.sh

按预期给出了脚本的文件名(file: myscript.sh),但是调用时:

源 myscript.sh

或者

。 ./myscript.sh

给出 shell 名称 ( bash) 而不是脚本文件名。

为什么会这样?

答案1

第一次调用将启动一个新的 bash 实例来解释该脚本,这意味着 bash 将设置$0为其路径。

第二次调用将把该文件视为可执行文件并运行它,因此$0将指向它。

后两个调用将把文件加载到 bash 的当前实例中,因此$0将指向那里。

注意:#2 需要文件可执行,而#1、#3 和 #4 则不需要。

相关内容