bash PS{0-4}

bash PS{0-4}


~/.bashrc

# Levels of indirection and time
PS4='+\011\[\e[3;34m\]\t\[\e[0m\]'
# User ID [Effective user ID]: Groups of user is a member
PS4+=' \[\e[0;35m\]$UID[$EUID]:$GROUPS\[\e[0m\] '
# Shell level and subshell
PS4+='\011\[\e[1;31m\]L$SHLVL:S$BASH_SUBSHELL\[\e[0m\]'
# Source file
PS4+=' \[\e[1;33m\]${BASH_SOURCE:-$0}\[\e[0m\]'
# Line number
PS4+='\[\e[0;36m\]#:${LINENO}\[\e[0m\]'
# Function name
PS4+='\011\[\e[1;32m\]${FUNCNAME[0]:+${FUNCNAME[0]}(): }\[\e[0m\]'
# Executed command
PS4+='\n# '
export PS4

images/197-1.png

PS0 - Значение этого параметра раскрывается и отображается интерактивными оболочками после прочтения команды и до ее выполнения. Т.е. это будет напечатано перед исполнением каждой команды, по умолчанию не установлено.

PS1 - Значение этого параметра раскрывается и используется в качестве основной строки приглашения. Это ваше стандартное приветствие user@host:~

PS2 - Значение этого параметра раскрывается, как и в случае с PS1, и используется в качестве дополнительной строки приглашения.

PS3 - Значение этого параметра используется в качестве подсказки для команды select.

PS4 - Значение этого параметра расширяется, как в случае с PS1, и значение печатается перед отображением каждой команды bash во время трассировки выполнения. Первый символ расширенного значения PS4 при необходимости повторяется несколько раз, чтобы указать несколько уровней косвенного обращения. По умолчанию +

Пояснение к bashrc

+ - Первый символ, отображает уровни косвенного обращения к командам, эта часть осталась как в оригинальном PS4.

\t - Текущее время, полезно для изучения тайминга команд, может быть заменено к примеру командой date '+%x %X:%N %z' для более подробного информирования, включая отображение наносекунд.

$UID[$EUID]:$GROUPS - Выведем ID и эффективный ID пользователя, перечисляем группы, членом которых является текущий пользователь. Это будет полезно для скриптов выполняющих действия от разных пользователей.

L$SHLVL:S$BASH_SUBSHELL - Отображения уровня оболочки, и уровня вложенной подоболочкой. Когда вы запускаете команду в оболочке, она запускается на уровне, называемом уровнем оболочки. Внутри оболочки вы можете открыть другую оболочку, которая делает её подоболочкой, или оболочку, которая её открыла.

Уровень оболочки SHLVL поможет понять насколько глубоко вы находитесь в дочерних сессиях, ведь у каждой последующей оболочки могут быть добавлены или переопределены важные вам параметры.

Уровень подоболочки BASH_SUBSHELL позволяет отслеживать все дочерние вызванные оболочки, к примеру, дочерняя оболочка не может вернуть переменную в родительскую оболочку.

${BASH_SOURCE:-$0} - Имя исполняемого файла или функции.

#:${LINENO} - Номер трассируемой строки.

${FUNCNAME[0]:+${FUNCNAME[0]}(): } - Имя функции в рамках которой происходит исполнение.

первоисточник

Содержание