Skip to content

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

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

PS0

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

Bash
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, где будет содержаться полная информация, которую удобно копипастить в документацию или отчеты об ошибках:

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.
Первый символ дублируется по мере необходимости для отображения уровня вложенности оболочки, поэтому для большей ясности лучше юзать символ + (который и так по дефолту стоит).
Пример такого информативного префикса:

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

PROMPT_COMMAND

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

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


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

bash