PS1 prompt mostrando diferentes no console local e remoto

2

Este é o meu prompt do PS1:

export PS1="\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[3[01;35m\]\u@\h\[3[00m\]:\[3[01;34m\]\w\[3[00m\]\$ "

Isso mostra o console perfeito no controle remoto (PST):

luis@Chomsky:~$

Não é possível mostrá-lo, mas o aviso completo está em cor violeta.
O problema é: em local (TTY) , mostra algumas coisas feias:

;luis@Chomsky: ~luis@Chomsky:~$

Não é possível mostrá-lo também, mas a primeira parte (de ";" a "~") não tem cor, e o restante é em cor violeta.

Additional data:  
  • Usando o Bash Shell:

luis@Chomsky:~$ ps -p$$ -ocmd= -bash

  • Testado no Ubuntu Desktop e no Ubuntu Server v14.04 LTS.
  • Testado (pelo menos) em um PC ASUS EEE portátil e na máquina virtual do VirtualBox.
  • eu uso para adicionar a linha export PS1= em ~/.bashrc .

Eu gostaria de saber por que isso está acontecendo e como eu poderia resolvê-lo .

Obrigado.

    
por Sopalajo de Arrierez 09.11.2014 / 02:52

1 resposta

1

A seqüência de controle \e]0;TITLE\a é reconhecida por muitos emuladores de terminal; define o título da janela. Essa seqüência de controle não é reconhecida pelo console do Linux (que não tem um título de qualquer maneira): ele vê \e]0 , decide “não sei o que isso significa, então eu vou ignorá-lo”, e imprime o seguinte texto.

Você precisará definir seu prompt de maneira diferente, dependendo do terminal atual.

title_text='\u@\h: \w'
set_title=
case $TERM in
  dtterm|rxvt|[Ek]term|*xterm) set_title='\[\e]0;'"$title_text"'\a\]';;
  screen) set_title='\[\ek'"$title_text"'\e\\]';;
esac
PS1="$set_title$PS1"
    
por 09.11.2014 / 04:38