如果我在 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 -pf
并login -pfl
查看差异。man login
描述差异:
-l
告诉 login 执行的程序这不是登录会话(按照惯例,登录会话以连字符作为 的第一个字符来通知程序argv[0]
;此选项将禁用该功能),并阻止它chdir(2)
进入用户的主目录。默认是添加连字符(这是一个登录会话)。