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


24

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

/bin/bash

但是命令列中有一个进程

-bash

这是什么意思?


5
这不特定于htop,特定于bash。这意味着它是一个登录shell。
jordanm 2015年

3
@jordanm都不特定于bash任何一个,其他shell也一样。
lcd047

Answers:


30

命令名称前的减号是登录程序用来启动登录Shell的约定。一个登录程序是一个程序,你通常键入密码,并为你启动一个会话,比如loginsudo -isu -,sshd的,等等登录shell文本模式会话初始外壳。

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

另请参见登录外壳程序和非登录外壳程序之间的区别?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.