在 htop 或其他显示进程状态的命令中,所有 bash 进程都在命令栏中
/bin/bash
但有一个进程在命令栏中
-bash
这是什么意思?
答案1
命令名前的减号是登录程序用来启动登录 shell 的约定。登录程序是您通常键入密码并为您启动会话的程序,例如login
、sudo -i
、su -
、 sshd 等。登录 shell 是文本模式会话的初始 shell。
按照惯例,当一个程序调用另一个程序时,它会将程序的名称作为参数 0 传递;命令行参数从 1 开始编号。例如,当您运行 时cp foo bar
,这将执行位于/bin/cp
(在典型系统上)的可执行文件,并cp
作为参数 0、foo
参数 1 和bar
参数 2 传递。正常约定是使用可执行文件的基本名称作为参数 0。当登录程序调用 shell 时,它违反了此约定,并在程序名称前添加了一个额外的连字符。 shell 理解这种备用约定,并为登录 shell 进行适当的设置,通常根据 shell读取初始化文件,例如~/.profile
、~/.login
、等。~/.bash_profile