bash 前面的破折号 (-)

bash 前面的破折号 (-)

如果我在 OS X (10.6.4) 终端中检查我的 bash shell,例如通过键入echo $0,我的 shell 前面会有一个破折号,如下所示:-bash。这个破折号是什么意思?

答案1

这意味着它bash作为登录 shell 被调用。


man bash说:

登录 shell 是参数零的第一个字符为 的 shell -,或者以--login选项启动的 shell。

当 bash 作为交互式登录 shell 或使用 选项作为非交互式 shell 调用时--login,它首先从文件 读取并执行命令/etc/profile(如果该文件存在)。读取该文件后,它会按顺序查找~/.bash_profile~/.bash_login~/.profile,然后从第一个存在且可读的文件中读取和执行命令。--noprofile启动 shell 时可以使用 选项来禁止此行为。

当登录 shell 退出时,bash 将从文件读取并执行命令~/.bash_logout(如果存在)。


login -pf您将在输出中发现ps默认启动登录 shell。

尝试运行login -pflogin -pfl查看差异。man login描述差异:

-l告诉 login 执行的程序这不是登录会话(按照惯例,登录会话以连字符作为 的第一个字符来通知程序argv[0];此选项将禁用该功能),并阻止它chdir(2)进入用户的主目录。默认是添加连字符(这是一个登录会话)。

相关内容