O Prompt do Linux (PS1) não é exibido corretamente no PuTTy (Desenho de linha com Shift Out / Shift In)

2

Meu Prompt do Linux definido como:

┌─ (USERNAME@HOSTNAME PATH) ->
└─ $

O PS1 é:

export PS1="\n\[3[30;1m\]\[3(0\]l\[3(B\]\[3(0\]q\[3(B\] (\u@\h \[3[31;1m\]\w\[3[30;1m\]) ->\n\[3(0\]m\[3(B\]\[3(0\]q\[3(B\] \'if [ \$? = 0 ]; then echo \[\e[1\;30m\]\$\[\e[1m\]; else echo \[\e[1\;31m\]\$\[\e[0m\]; fi\' \[3[0m\]"

De alguma forma, NÃO PODE ser exibido corretamente no PuTTy, a captura de tela é:

Asconfiguraçõesda Janela - > Tradução em My Putty:

  • Conjunto de caracteres remotos: - > %código%
  • Entrega de caracteres de desenho de linha: - > %código%

Como posso mostrar o prompt correto no My PuTTy? (By the way, eu tentei todas as opções de Entrega de caracteres de desenho: )

O prompt do PuTTy ainda não funciona usando:

if [ -z "$DISPLAY" ]
then
export PS1="\n\[3[30;1m\]┌─ (\u@\h \[3[31;1m\]\w\[3[30;1m\]) ->\n└─ \'if [ \$? = 0 ]; then echo \[\e[1\;30m\]\$\[\e[1m\]; else echo \[\e[1\;31m\]\$\[\e[0m\]; fi\' \[3[0m\]"
else
export PS1="\n\[3[30;1m\]\[3(0\]l\[3(B\]\[3(0\]q\[3(B\] (\u@\h \[3[31;1m\]\w\[3[30;1m\]) ->\n\[3(0\]m\[3(B\]\[3(0\]q\[3(B\] \'if [ \$? = 0 ]; then echo \[\e[1\;30m\]\$\[\e[1m\]; else echo \[\e[1\;31m\]\$\[\e[0m\]; fi\' \[3[0m\]"
fi

    
por Marslo 25.04.2014 / 09:40

1 resposta

2

A maneira de consertar isso é parar de usar sequências "shift-out / shift in" e começar a incluir os caracteres de desenho de linha diretamente como UTF-8 (assim como você fez no seu exemplo):

PS1="\n\[3[30;1m\]┌─ (\u@\h \[3[31;1m\]\w\[3[30;1m\]) ->\n└─ \'if [ \$? = 0 ]; then echo \[\e[1\;30m\]\$\[\e[1m\]; else echo \[\e[1\;31m\]\$\[\e[0m\]; fi\' \[3[0m\]"

O problema aqui é que o PuTTY atualmente não suporta as seqüências do conjunto de caracteres alternativos ISO 2022 quando ele está sendo executado no modo UTF-8. Existe uma entrada na lista de desejos do PuTTY, juntamente com explicação por que misturar UTF-8 e ISO 2022 é indesejável.

Como nos comentários: Observe que as versões mais antigas do Consolas não tinham caracteres de desenho de caixa. Você terá que obter Consolas do Windows 8.

    
por 25.04.2014 / 10:52