PuTTY + Ubuntu 12.10: por que não tenho cores a menos que eu use a tela?

1

Estou acessando uma nova instalação do Ubuntu 12.10 via PuTTY. Eu estou tentando obter meu shell para exibir em cores. A cor funciona bem em aplicativos interativos, como vim , mas quero obter cores em, e. meu prompt $ PS1, git , ls , etc.

Quando uso uma sessão screen , a cor funciona magicamente. Sem screen não há cor.

Sem tela:

$ set |grep -i term
TERM=xterm

Com tela:

$ set |grep -i term
TERM=screen
TERMCAP=$'SC|screen|VT 100/ANSI X3.64 virtual terminal:\\n\t:DO=\E[%dB:LE=\E[%dD:RI=\E[%dC:UP=\E[%dA:bs:bt=\E[Z:\\n\t:cd=\E[J:ce=\E[K:cl=\E[H\E[J:cm=\E[%i%d;%dH:ct=\E[3g:\\n\t:do=^J:nd=\E[C:pt:rc=\E8:rs=\Ec:sc=\E7:st=\EH:up=\EM:\\n\t:le=^H:bl=^G:cr=^M:it#8:ho=\E[H:nw=\EE:ta=^I:is=\E)0:\\n\t:li#62:co#115:am:xn:xv:LP:sr=\EM:al=\E[L:AL=\E[%dL:\\n\t:cs=\E[%i%d;%dr:dl=\E[M:DL=\E[%dM:dc=\E[P:DC=\E[%dP:\\n\t:im=\E[4h:ei=\E[4l:mi:IC=\E[%d@:ks=\E[?1h\E=:\\n\t:ke=\E[?1l\E>:vi=\E[?25l:ve=\E[34h\E[?25h:vs=\E[34l:\\n\t:ti=\E[?1049h:te=\E[?1049l:us=\E[4m:ue=\E[24m:so=\E[3m:\\n\t:se=\E[23m:mb=\E[5m:md=\E[1m:mr=\E[7m:me=\E[m:ms:\\n\t:Co#8:pa#64:AF=\E[3%dm:AB=\E[4%dm:op=\E[39;49m:AX:\\n\t:vb=\Eg:G0:as=\E(0:ae=\E(B:\\n\t:ac=\140\140aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~..--++,,hhII00:\\n\t:po=\E[5i:pf=\E[4i:k0=\E[10~:k1=\EOP:k2=\EOQ:k3=\EOR:\\n\t:k4=\EOS:k5=\E[15~:k6=\E[17~:k7=\E[18~:k8=\E[19~:\\n\t:k9=\E[20~:k;=\E[21~:F1=\E[23~:F2=\E[24~:F3=\E[1;2P:\\n\t:F4=\E[1;2Q:F5=\E[1;2R:F6=\E[1;2S:F7=\E[15;2~:\\n\t:F8=\E[17;2~:F9=\E[18;2~:FA=\E[19;2~:kb=7:K2=\EOE:\\n\t:kB=\E[Z:kF=\E[1;2B:kR=\E[1;2A:*4=\E[3;2~:*7=\E[1;2F:\\n\t:#2=\E[1;2H:#3=\E[2;2~:#4=\E[1;2D:%c=\E[6;2~:%e=\E[5;2~:\\n\t:%i=\E[1;2C:kh=\E[1~:@1=\E[1~:kH=\E[4~:@7=\E[4~:\\n\t:kN=\E[6~:kP=\E[5~:kI=\E[2~:kD=\E[3~:ku=\EOA:kd=\EOB:\\n\t:kr=\EOC:kl=\EOD:km:'

Qual é a variável de ambiente TERMCAP e como ela é definida por screen ? Como faço para que isso seja definido fora de screen (apenas copiando e colando no meu .bashrc )?

    
por Jesse Buchanan 07.12.2012 / 14:36

2 respostas

2

O problema foi que ~/.bashrc não é originado ao efetuar login diretamente via PuTTY, mas é quando se usa uma sessão screen . Aparentemente, o login via PuTTY é considerado um " shell non-login non interactive interativo ".

Como @terdon apontou, ls , grep et al são incolores por padrão, mas meu .bashrc tem alias para usar cores.

Minha correção foi usar o .bashrc no meu .bash_profile:

if [ -f ~/.bashrc ]; then
    . ~/.bashrc
fi
    
por 07.12.2012 / 18:04
1

ls etc não usa cor por padrão, se você quiser ter a cor você precisa definir a opção específica. Você pode fazer isso globalmente definindo aliases no seu arquivo $HOME/.bashrc (no servidor remoto):

  1. Defina $PS1 (este é do meu .bashrc., você pode alterá-lo conforme desejado):

    PS1='${debian_chroot:+($debian_chroot)}\[3[01;33m\]\u@\h\[3[01;34m\] \W \$\[3[00m\] '
    

    Isso parece assim:

  2. Defina aliases para (neste exemplo ls e grep você precisa encontrar a opção apropriada para git e qualquer outro programa que você queira sempre ter colorido):

    alias grep='grep --color' 
    alias ls='ls --color=tty'
    
por 07.12.2012 / 14:52