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引用