为什么在 bash REPL 中运行 `echo $0` 只返回 bash 可执行文件的名称,而在 zsh 中运行则返回 zsh 可执行文件的绝对路径?

为什么在 bash REPL 中运行 `echo $0` 只返回 bash 可执行文件的名称,而在 zsh 中运行则返回 zsh 可执行文件的绝对路径?

为什么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

相关内容