来自 Bash 手册
$0
扩展为 shell 或 shell 脚本的名称。这是在 shell 初始化时设置的。如果使用命令文件调用 Bash(请参见第 39 页,第 3.8 节 [Shell 脚本]),
$0
则设置为该文件的名称。如果使用该选项启动 Bash
-c
(请参阅第 6.1 节 [调用 Bash],第 80 页),则将 then$0
设置为要执行的字符串之后的第一个参数(如果存在)。否则,它被设置为用于调用 Bash 的文件名,如参数零给出的那样。
我理解前两种情况,但不理解最后一种。 “否则”和“用于调用 Bash 的文件名”具体是什么意思?
答案1
Bash 可以通过多种方式调用,包括直接使用其可执行文件 ( /bin/bash
) 或指向它的链接;经常出现这种情况/bin/sh
。 “Otherwise”涵盖了这种情况,并且用于调用 Bash 的文件名就是 - bash
、sh
等/bin/sh
。
尝试一下,您会看到:bash
然后echo $0
prints bash
,/bin/bash
然后echo $0
prints /bin/bash
,等等。
可以说这也涵盖了 shebangs,但也许这是第一个案例。