Algo está errado com o meu prompt bash?

1

Então, quando eu digito com o meu novo prompt do bash, ele continua por um tempo, mas se o comando ficar longo, ele faz um loop em torno de si mesmo e escreve sobre o prompt do bash. Aqui está meu PS1:

PS1='\e[0;34m\A\e[m | \e[0;31m-\e[m \e[0;32m>>\e[m  '

Para referência, aqui estão as linhas de um padrão .bashrc relevante para PS1:

if [ "$color_prompt" = yes ]; then
    PS1='${debian_chroot:+($debian_chroot)}\[3[01;32m\]\u@\h\[3[00m\]:\[3[01;34m\]\w\[3[00m\]\$ '
else
    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
unset color_prompt force_color_prompt

# If this is an xterm set the title to user@host:dir
case "$TERM" in
xterm*|rxvt*)
    PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
    ;;
*)
    ;;
esac
    
por mrnatbus12 03.06.2014 / 01:26

1 resposta

0

Você precisa colocar as seqüências de escape em \[ \] :

PS1='\[\e[0;34m\]\A\[\e[m\] | \[\e[0;31m\]-\[\e[m\] \[\e[0;32m\]>>\[\e[m\]  '

Isso é essencialmente o mesmo que a resposta de @ user107425, mas usando a sintaxe \e em vez de 3 e com o fechamento \[\e[m\] que redefine a cor para o padrão após o término do prompt.

    
por terdon 03.06.2014 / 14:50