Самый короткий способ - включить подстановку команды, но с экранированием, чтобы она не оценивалась, пока PS1
не отобразится .
# PS1="$(date -R) > " would include the same date in every prompt
PS1='$(date -R) > "
Я предпочитаю использовать PROMPT_COMMAND
переменная, которая позволяет указать код для запуска перед отображением каждого приглашения. Это позволяет вам разбивать более сложные запросы на более простые для выполнения шаги внутри функции.
PROMPT_COMMAND='make_prompt'
make_prompt () {
# Just to demonstrate building up PS1 piece by piece
PS1="$(date -R)"
PS1+=" > "
}
Однако для этого конкретного c примера подстановка команд не требуется. Существуют уже существующие escape-последовательности для отображения даты:
# duplicating the format of date -R (RFC 2822)
PS1='\D{%a, %d %b %Y %H:%M:%S %z} > '
Внутри \D{...}
вы можете использовать любую строку, которую будет обрабатывать strftime
.