ЗШ
Попробуй это:
setopt PROMPT_SUBST
PROMPT='%{$(pwd|grep --color=always /)%${#PWD}G%} %(!.%F{red}.%F{cyan})%n%f@%F{yellow}%m%f%(!.%F{red}.)%#%f '
Вот разбивка подсказки:
- PROMPT_SUBST включает подстановку команд в приглашении (и расширение параметров и арифметическое расширение)
%{...%} - escape-последовательность
$(pwd|grep --color=always /) - распечатать текущий каталог и выделить / - цвет будет зависеть от переменной среды $ GREP_COLORS (или ее значения по умолчанию) - по умолчанию выделен полужирный красный
%${#PWD}G - использовать длину в символах имени текущего каталога в качестве значения сбоя. Это заставляет оболочку учитывать это длину предыдущей последовательности символов (после « %{ ») вместо фактической длины строки, которая включает escape-последовательности ANSI. Это предохраняет оболочку от путаницы относительно положения курсора относительно конца подсказки.
- - - - - - - это конец части, которая отвечает на ваш вопрос - - - - - - -
%(!.%F{red}.%F{cyan}) - если это привилегированная оболочка (root), установите цвет переднего плана на красный, в противном случае - голубой
%n - вывести имя пользователя
%f - сбросить цвет переднего плана на значение по умолчанию
@ - буквальный знак
%F{yellow} - сделать цвет переднего плана желтым
%m - вывести имя хоста
%f - сбросить цвет переднего плана на значение по умолчанию
%(!.%F{red}.) - если это привилегированная оболочка (root), установите цвет переднего плана на красный
%# - вывести # для привилегированной оболочки или % для непривилегированной
%f - сбросить цвет переднего плана на значение по умолчанию
Я ставлю путь первым в этой подсказке для акцента, так как вопрос касается пути.

Вот версия для zsh, которая меняет цвет косой черты в зависимости от того, являетесь ли вы пользователем root (привилегированным), манипулируя переменной $GREP_COLORS :
setopt PROMPT_SUBST
PROMPT='%{$(pwd|([[ $EUID == 0 ]] && GREP_COLORS="mt=01;31" grep --color=always /|| GREP_COLORS="mt=01;34" grep --color=always /))%${#PWD}G%} %(!.%F{red}.%F{cyan})%n%f@%F{yellow}%m%f%(!.%F{red}.)%#%f '
удар
Вы можете сделать похожую подсказку в Bash. В этом примере я сначала указал имя пользователя и хоста, а цвет слешей также меняется, когда UID равен 0. Предупреждение: это перезаписывает переменную приглашения Bash $PS1 . Это не должно быть проблемой, если вы не делаете что-то особенное или не ожидаете, что поведение изменится, когда вы установите эту переменную напрямую, и это действует. Кроме того, здесь используется переменная с именем « usercolor », которая может конфликтовать с чем-то другим, хотя все это можно поместить в функцию, а переменная объявлена как локальная.
PROMPT_COMMAND='usercolor="\[\033[0;36m\]";[[ $EUID == 0 ]] && usercolor="\[\033[1;31m\]";PS1="$(pwd)";PS1="$usercolor\u\[\033[0m\]@\[\033[0;33m\]\h\[\033[0m\]:${PS1//\//$usercolor/\[\033[0m\]}$usercolor\\$\[\033[0m\] "'

Я воспользовался тем, что в Bash нет функции "сбоя" в zsh, чтобы использовать подстановку расширения параметров для условного окрашивания слешей (вместо использования grep).