如果在bash中我这样做(从命令行)
echo $0
Run Code Online (Sandbox Code Playgroud)
输出是
bash
Run Code Online (Sandbox Code Playgroud)
在其他 shell 中也是如此。
但是如果我在zsh中做同样的事情,输出是
-zsh
Run Code Online (Sandbox Code Playgroud)
为什么zsh前面有一个破折号?
shell 之间的一个旧约定是,如果使用以 开头的名称调用 shell -,则它应该将自身初始化为登录 shell。zsh您的终端仿真器在为您执行时遵循此约定。
您可以使用内置-l标志 to来观察这一点(它在命令名称中添加前导)。zshexec-
% ( exec bash -c 'echo $0')
bash
% ( exec -l bash -c 'echo $0')
-bash
Run Code Online (Sandbox Code Playgroud)
前导的效果-一般相当于使用该-l选项运行 shell。
| 归档时间: |
|
| 查看次数: |
961 次 |
| 最近记录: |