Answers:
这意味着将bash
其作为登录外壳程序调用。
man bash
说:
登录shell是一个参数为零的第一个字符为的shell
-
,或一个以该--login
选项开头的shell 。当bash作为交互式登录shell或带有
--login
选项的非交互式shell被调用时,它首先从文件/etc/profile
(如果该文件存在)中读取并执行命令。读取文件后,它会查找~/.bash_profile
,~/.bash_login
以及~/.profile
以该顺序,并读取并从存在并且可读的第一个执行命令。--noprofile
启动外壳程序以禁止此行为时,可以使用该选项。当退出登录shell时,bash从文件中读取并执行命令
~/.bash_logout
(如果存在)。
您将login -pf
在ps
输出中找到,默认情况下会启动登录Shell。
尝试运行login -pf
,login -pfl
看看有什么区别。man login
描述区别:
-l
告诉登录执行的程序这不是登录会话(按照惯例,登录会话以连字符作为第一个字符argv[0]
;该选项将其禁用),并阻止该chdir(2)
程序进入用户的主目录。默认为添加连字符(这是登录会话)。
echo $0
:如果键入echo $0
被调用的终端ctrl + alt + f1
,则结果为-bash
; 但是如果我在调用的termianl中键入它ctrl + alt + t
,则结果为bash
(无前划线)。你能解释为什么吗?
--login
参数启动bash时,它不会更改其argv[0]
,但会充当登录shell。
man
引用