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