Приглашения к вводу в bash

ПриглашениеИспользованиеПо умолчанию
PS0Отображение информации перед выполнением команды (после нажатия клавиши Enter) в bash 4.4+Нет
PS1Основное приглашение к вводу в Bourne/bash'\s-\v\$ '
PS2Дополнительное приглашение к вводу в Bourne/bash; появляется после нажатия клавиши Enter при вводе текста в кавычках или встроенного документа.'> '
PS3Приглашение, используемое встроенной командой select'#? '
PS4Отладочный параметр bash'+ '
PROMPT_COMMANDКоманда перед $PS1Нет

PS0

Отображение информации после нажатия клавиши Enter в командной строке, но до запуска команды. Может пригодиться, например, для вывода времени перед выполнением команды:

PS0='Start: \D{%Y-%m-%d_%H:%M:%S_%Z}\n'
 
# Результат:
root@6938423436f9:/# export PS0='Start: \D{%Y-%m-%d_%H:%M:%S_%Z}\n'
Start: 2024-01-06_16:33:23_UTC
root@6938423436f9:/# 

PS1

Пример основного приглашения в bash, где будет содержаться полная информация, которую удобно копипастить в документацию или отчеты об ошибках:

export PS1='\n[\u@\h:T\l:L$SHLVL:C\!:J\j:\D{%Y-%m-%d_%H:%M:%S_%Z}]\n$PWD\$ '
 
# Результат:
[root@e65b45c6ef2d:T0:L1:C2:J0:2024-01-06_16:28:21_UTC]
/# 

PS4

Отладочный префикс, который выводится, когда активна настройка set -x.
Первый символ дублируется по мере необходимости для отображения уровня вложенности оболочки, поэтому для большей ясности лучше юзать символ + (который и так по дефолту стоит).
Пример такого информативного префикса:

export PS4='+xtrace $BASH_SOURCE:$LINENO:$FUNCNAME: '

PROMPT_COMMAND

Используется для самых разных вещей, таких как обновление заголовка окна для терминалов с графическим интерфейсом, отображение динамических сведений о среде (например, текущая ветка git) или даже для примитивной и небезопасной регистрации.
Пример для журналирования:

export PROMPT_COMMAND='logger -p local1.notice -t "bashlog[$$];" "SSH=$SSH_CONNECTION; USER=$USER; PATH=$PWD; COMMAND=$(fc -ln -1)"'

Соус: Книга “Идиомы Bash Глава 10. “Помимо идиом: работа с bashПриглашения к вводу

bash