Bash prompt over-writing linha atual

0

Estou tendo problemas semelhantes neste tópico aqui, com a linha de comando sobrescrevendo a linha e minha seta para cima substituindo todo o texto.

O prompt do terminal não é agrupado corretamente

Quando eu corro

$ shopt  | grep checkwinsize
checkwinsize    on

Parece que o problema é causado por não envolver as partes certas da parte ps1 do meu bashrc. script em []. Eu tentei seguir as explicações nos outros tópicos, mas não pareceu ajudar.

Esta é a parte do meu bashrc. roteiro.

force_color_prompt=yes

if [ -n "$force_color_prompt" ]; then
    if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
    # We have color support; assume it's compliant with Ecma-48
    # (ISO/IEC-6429). (Lack of such support is extremely rare, and such
    # a case would tend to support setf rather than setaf.)
    color_prompt=yes
    else
    color_prompt=
    fi
fi

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

Há algo de errado com o meu bashrc. script que está causando esse problema?

Estou executando o Ubuntu 16.04.4 Cinnamon versão 3.6.7 e o kernel 4.13.0-36-genérico.

Obrigado.

    
por sahwahn 13.03.2018 / 13:36

1 resposta

0

Não consigo reproduzir ou ver problemas com o seu script, embora possa estar faltando alguma coisa.

Primeiramente, garanto que o problema está na verdade com essa parte do seu bashrc. Execute "echo $ PS1" para verificar se o prompt está sendo modificado em outro lugar. Para ter certeza, veja se o problema ainda ocorre após a execução:

bash -noprofile -norc
PS1='${debian_chroot:+($debian_chroot)}\[3[01;32m\]\u@\h\[3[00m\]:\[3[01;34m\]\w\[3[00m\]\$ '
PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"

Se o problema ainda estiver presente, o culpado pode ser o seu emulador de terminal. Verifique se o valor de '$ TERM' está correto para o emulador de terminal que você usa e tente usar um diferente. Você também pode tentar reinicializar o terminal e definir PS1 manualmente. Supondo que você esteja usando o xterm:

TERM=xterm
tset $TERM
PS1='${debian_chroot:+($debian_chroot)}\[3[01;32m\]\u@\h\[3[00m\]:\[3[01;34m\]\w\[3[00m\]\$ '
PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
    
por 13.03.2018 / 15:26