在 htop 输出中将减号作为命令的第一个字符是什么意思?

Ort*_*kni 24 shell process

在 htop 或其他显示进程状态的命令中,所有 bash 进程都在命令列中

/bin/bash
Run Code Online (Sandbox Code Playgroud)

但是一个进程在命令列中

-bash
Run Code Online (Sandbox Code Playgroud)

这是什么意思?

Gil*_*il' 31

命令名称前的减号是登录程序用于启动登录 shell 的约定。登录程序是您通常输入密码并为您启动会话的程序,例如loginsudo -isu -、 sshd 等。登录外壳是文本模式会话的初始外壳。

通常,当一个程序调用另一个程序时,它会将程序的名称作为参数 0 传递;命令行参数从 1 开始编号。例如,当您运行时cp foo bar,这将执行位于/bin/cp(在典型系统上)的可执行文件,并cp作为参数 0、foo作为参数 1 和bar作为参数 2传递。通常的约定是使用可执行文件的基本名称作为参数 0。当登录程序调用 shell 时,它违反了此约定并在程序名称之前放置了一个额外的连字符。壳适当地了解该替换惯例和一套东西开登录shell,通常读取初始化文件如~/.profile~/.login~/.bash_profile等,这取决于外壳。

另请参阅登录外壳和非登录外壳之间的区别?