O que eu faço para esse tipo de coisa é alterar o valor de PS1
quando eu altero os diretórios. Isso é trivial em zsh, que executa o comando chpwd
; Isso pode ser feito no bash por definindo wrappers em torno de cd
e amigos .
cd () { builtin cd "$@" && chpwd; }
pushd () { builtin pushd "$@" && chpwd; }
popd () { builtin popd "$@" && chpwd; }
chpwd () {
if git rev-parse --show-toplevel 2>/dev/null >/dev/null; then
PS1='$ \w $(__git_ps1): '
else
PS1='$ \w: '
fi
}