zsh
Tente o seguinte:
setopt PROMPT_SUBST
PROMPT='%{$(pwd|grep --color=always /)%${#PWD}G%} %(!.%F{red}.%F{cyan})%n%f@%F{yellow}%m%f%(!.%F{red}.)%#%f '
Aqui está um detalhamento do prompt:
- PROMPT_SUBST ativa a substituição de comandos no prompt (e expansão de parâmetros e expansão aritmética)
%{...%} - uma sequência de escape
$(pwd|grep --color=always /)- imprima o diretório atual e realce /- a cor dependerá da variável de ambiente $ GREP_COLORS (ou seu valor padrão) - negrito é o padrão
%${#PWD}G- use o comprimento em caracteres do nome do diretório atual como um valor de falha. Isso faz com que o shell considere esse o comprimento da sequência de caracteres anterior (após o " %{") em vez do comprimento real da cadeia de caracteres que inclui as seqüências de escape ANSI. Isso evita que o shell fique confuso sobre a posição do cursor em relação ao final do prompt.
- - - - - - - este é o fim da parte que responde à sua pergunta - - - - - - -
%(!.%F{red}.%F{cyan}) - se esse for um shell privilegiado (raiz), defina a cor do primeiro plano como vermelho, caso contrário, ciano
%n - gera o nome de usuário
%f - redefinir a cor do primeiro plano para o padrão
@ - um literal no sinal
%F{yellow} - deixe a cor do primeiro plano amarela
%m - gera o nome do host
%f - redefinir a cor do primeiro plano para o padrão
%(!.%F{red}.) - se esse for um shell privilegiado (raiz), defina a cor do primeiro plano como vermelho
%#- produza a #para um shell privilegiado ou %para um não privilegiado
%f - redefinir a cor do primeiro plano para o padrão
Coloquei o caminho em primeiro lugar neste prompt de ênfase, pois a pergunta diz respeito ao caminho.

Aqui está uma versão do zsh que muda a cor da barra dependendo se você é root (privilegiado) manipulando a $GREP_COLORSvariável:
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 '
Bater
Você pode fazer um prompt semelhante no Bash. Neste exemplo, coloquei o usuário e o nome do host em primeiro lugar e a cor das barras também muda quando o UID é 0. Aviso: isso substitui a $PS1variável de prompt do Bash . Isso não deve ser um problema, a menos que você esteja fazendo algo especial ou espere que o comportamento mude quando você definir essa variável diretamente e isso estiver em vigor. Além disso, isso usa uma variável chamada " usercolor" que pode colidir com outra coisa, embora tudo possa ser colocado em uma função e a variável declarada local.
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\] "'

Aproveitei o fato de o Bash não ter o recurso "falha" do zsh para usar a substituição de expansão de parâmetro para colorir condicionalmente as barras (em vez de usar grep).