Bash打印每个主提示(PS1)之前,都会检查变量PROMPT_COMMAND的值。如果设置了PROMPT_COMMAND并且值非空,则执行该命令。
$ PROMPT_COMMAND='echo hello word'
hello word
$
hello word
$
hello word
$
在交互式Shell里,Bash会在读取命令的第一行之前展开并显示PS1,并在读取多行命令的第二行及后续行之前会展开并显示PS2. Bash在读取命令之后但在执行命令之前会展开并显示PS0.
PS1的默认值是’\s-\v$ ’
PS2的默认值是’> ’
PS3的值用作select命令的提示。 如果未设置此变量,则select命令会提示’#? ’
PS4的值,在设置了-x选项时,会在回显命令行之前打印。 必要时,将PS4值的第一个字符会被复制多次,以指示多个间接级别。 默认值为’+ '。
$ set -x
$ echo abc # PS1
+ echo abc # PS4
$ PS0