Bash provides an environment variable called PROMPT_COMMAND
.
The contents of this variable are executed as a regular Bash command just
before Bash displays a prompt.
[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:~]
What happened above was that I changed PS1 to no longer include the \t escape sequence (added in a previous section), so the time was no longer a part of the prompt. Then I used date +%H%M to display the time in a format I like better. But it appears on a different line than the prompt. We can tidy this up using echo -n ... as shown below.
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 ... controls the output of the
date command and suppresses the trailing newline,
allowing the prompt to appear all on one line. At the end, I used the
unset command to remove the
PROMPT_COMMAND
environment variable.