Seu problema é que $(git_prompt)
é avaliado para alguma sequência constante antes de ser adicionada a $PS1
. Você precisa adicionar o código:
PS1+='$(git_prompt)'
Eu tenho o seguinte prompt no bash que mostra o ramo atual do git:
PS1+="$(git_prompt)" #git_prompt is a function in my .bashrc
que funciona quando eu obtenho o .bashrc, mas não quando eu mudo o branch, então o var do PS1 só é avaliado quando eu obtenho o .bashrc, mas ele deve ser avaliado toda vez que um novo prompt é exibido. Como isso pode ser feito com o bash 4.3?
Seu problema é que $(git_prompt)
é avaliado para alguma sequência constante antes de ser adicionada a $PS1
. Você precisa adicionar o código:
PS1+='$(git_prompt)'
Eu consertei agora usando isso como prompt
PS1="$green\u $r@ $red\h $r: $yellow\W \!$r \$(git_prompt) \n$yellow\$ $r"
antes de concatenar várias strings para uma string PS1, parecia haver o problema.
O truque é escrever um \
antes de executar o comando com $(git_prompt)
.
Então, $(git_prompt)
será avaliado quando o .bashrc
for avaliado e
\$(git_prompt)
será avaliado toda vez que um novo prompt for exibido
tente aspas simples no seu ps1
PS1+='$(git_prompt)'
Eu também sugiro a minha função psOne
psOne ()
{
ps1tm=${1:-01};
ps1tc=(30 31 32 33 34 35 36 37 38);
PS1='${debian_chroot:+($debian_chroot)}\[3[${ps1tm};${ps1tc[$((RANDOM%${#ps1tc[@]}))]}m\]\u\[3[${ps1tm};${ps1tc[$((RANDOM%${#ps1tc[@]}))]}m\]@\[3[${ps1tm};${ps1tc[$((RANDOM%${#ps1tc[@]}))]}m\]\h\[3[${ps1tm};${ps1tc[$((RANDOM%${#ps1tc[@]}))]}m\] :\[3[${ps1tm};${ps1tc[$((RANDOM%${#ps1tc[@]}))]}m\] \w\[3[${ps1tm};${ps1tc[$((RANDOM%${#ps1tc[@]}))]}m\] \$ '
}
Quer ver a loucura? É assim que eu construo meu prompt bash:
# inspiration: http://www.stumbleupon.com/su/2LpQMi
user_host_path="${debian_chroot:+($debian_chroot) }"'\u@\h:\w'
xterm_title='\[\e]0;'"$user_host_path"'\a\]'
[[ $TERM == xterm* || $TERM == rxvt* ]] && line1="${xterm_title}"
git_branch='$(git_current_branch " (%s)")'
line1="${line1}${user_host_path}${git_branch} "
line2='\$ '
print_time='{ printf "%*s" $(($(tput cols) - 10)) " "|sed -e "s/./˙/g" -re "s/.{6}(..)$/ bash /"; date "+ %T"; } >&2'
color_bold='\[\e[0;1m\]'
color_reset='\[\e[0m\]'
PROMPT_COMMAND="_rc_=\$?;${print_time};((_rc_!=0)) && PS1='${line1}\n${color_bold}[\$_rc_]${color_reset} ${line2}' || PS1='${line1}\n${line2}'"
unset user_host_path xterm_title color_bold color_reset line1 line2 print_time git_branch
Eu não sou muito fã de cores.