web-dev-qa-db-ja.com

PuTTY + Ubuntu 12.10:画面を使用しないと色が表示されないのはなぜですか?

PuTTYを介して新しいUbuntu12.10インストールにアクセスしています。シェルをカラーで表示しようとしています。色はvimのようなインタラクティブなアプリケーションでは問題なく機能しますが、たとえば次のように色を取得したいと思います。私の$ PS1プロンプト、gitlsなど。

screenセッションを使用すると、色が魔法のように機能します。 screenがないと、色はありません。

画面なし:

$ set |grep -i term
TERM=xterm

画面あり:

$ 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=\177: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:'

TERMCAP環境変数とは何ですか?また、screenによってどのように設定されますか?どうすればそれをscreenの外に設定できますか(.bashrcにコピーして貼り付けるだけではありません)?

2
Jesse Buchanan

問題は~/.bashrcは、PuTTYを介して直接ログインする場合はソースになりませんが、screenセッションを使用する場合はソースになります。どうやら、PuTTY経由でのログインは、「 リモート非ログイン非インタラクティブシェル "」と見なされます。

@terdonが指摘したように、lsgrep et alはデフォルトでは無色ですが、私の.bashrc色を使用するようにエイリアスされています。

私の修正は、.bash_profileで.bashrcをソースすることでした:

if [ -f ~/.bashrc ]; then
    . ~/.bashrc
fi
3
Jesse Buchanan

lsなどはデフォルトでは色を使用しません。色を付けたい場合は、特定のオプションを設定する必要があります。これは、(リモートサーバー上の)$HOME/.bashrcファイルにエイリアスを設定することでグローバルに実行できます。

  1. Set $PS1(これは私の.bashrcからのものです。必要に応じて変更できます):

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

    これは次のようになります。 enter image description here

  2. エイリアスを設定します(この例では、lsgrep、およびgitと常に色付けしたい他のプログラムに適切なオプションを見つける必要があります):

    alias grep='grep --color' 
    alias ls='ls --color=tty'
    
1
terdon