4.1. PROMPT_COMMAND 命令

Bash 提供了一个名为PROMPT_COMMAND 命令的环境变量。此变量的内容会在 Bash 显示提示符之前,作为常规 Bash 命令执行。

[21:55:01][giles@nikola:~] PS1="[\u@\h:\w]\$ "
[giles@nikola:~] PROMPT_COMMAND="date +%H%M"
2155
[giles@nikola:~] d
bin   mail
2156
[giles@nikola:~] 

上面发生的事情是我更改了 PS1,使其不再包含\t转义序列(在上一节中添加),因此时间不再是提示符的一部分。然后我使用date +%H%M以我更喜欢的格式显示时间。但它出现在与提示符不同的行上。使用以下方法整理echo -n ...如下所示,适用于 Bash 2.0+,但似乎不适用于 Bash 1.14.7:显然提示符的绘制方式不同,以下方法会导致文本重叠。

2156
[giles@nikola:~] PROMPT_COMMAND="echo -n [$(date +%H%M)]"
[2156][giles@nikola:~]$
[2156][giles@nikola:~]$ d
bin   mail
[2157][giles@nikola:~]$ unset PROMPT_COMMAND
[giles@nikola:~]

echo -n ...控制 date 命令的输出并抑制尾随换行符,从而允许提示符显示在同一行上。最后,我使用了 unset 命令来删除PROMPT_COMMAND 命令环境变量。