如果在命令行中使用bash,我执行以下操作:
为什么zsh前面会有那个破折号?
echo $0
输出结果为:
bash
类似地,在其他 shell 中也是如此。
但如果我在 zsh 中执行相同的操作,则输出为:
-zsh
为什么zsh前面会有那个破折号?
-
开头,那么它应该将自己初始化为登录shell。当终端仿真器为您执行zsh
时,它遵循这个惯例。zsh
内置的exec
命令的-l
标志来观察这一点(它在命令名称前添加一个前导-
)。% ( exec bash -c 'echo $0')
bash
% ( exec -l bash -c 'echo $0')
-bash
在大多数情况下,前导 -
的效果相当于使用 -l
选项运行 shell。
exec
没有选项。Bash的exec
有选项 - 我以前没有查看过它是否有选项。您还可以使用exec -l
在bash
之前添加破折号。 - Jonathan Lefflerzsh
作为他们的登录shell,因此可以安全地假设exec -a
可用于演示目的,以展示如何设置$0
的值。(虽然我不知道-l
,但那更简单。) - chepner
zsh -l
)。您的终端仿真器正在遵循这个惯例。 - chepner