~/.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

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]}(): } - Имя функции в рамках которой происходит исполнение.