为什么echo $0
在 bash REPL 中运行仅返回 bash 可执行文件的名称,而在 zsh 中运行则返回 zsh 可执行文件的绝对路径?
在bash中:
Davids-MacBook-Pro:~ david$ echo $0
-bash
在 zsh 中:
in ~
echo $0
/usr/local/bin/zsh
答案1
您获得的内容$0
取决于 shell 的调用方式。如果你从 开始bash
,那就是bash
。如果你从 开始/bin/bash
,那就是/bin/bash
。同上zsh
。
$ bash
$ echo $0
bash
$ exit
exit
$ /bin/bash
$ echo $0
/bin/bash
$ exit
exit
$ /bin/../bin/../bin/bash
$ echo $0
/bin/../bin/../bin/bash
$ exit
exit
$ zsh
$ echo $0
zsh
$ exit
$ /bin/zsh
$ echo $0
/bin/zsh
$ exit
$ /bin/../bin/../bin/zsh
$ echo $0
/bin/../bin/../bin/zsh
$ exit