PuTTYを介して新しいUbuntu12.10インストールにアクセスしています。シェルをカラーで表示しようとしています。色はvim
のようなインタラクティブなアプリケーションでは問題なく機能しますが、たとえば次のように色を取得したいと思います。私の$ PS1プロンプト、git
、ls
など。
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
にコピーして貼り付けるだけではありません)?
問題は~/.bashrc
は、PuTTYを介して直接ログインする場合はソースになりませんが、screen
セッションを使用する場合はソースになります。どうやら、PuTTY経由でのログインは、「 リモート非ログイン非インタラクティブシェル "」と見なされます。
@terdonが指摘したように、ls
、grep
et alはデフォルトでは無色ですが、私の.bashrc
色を使用するようにエイリアスされています。
私の修正は、.bash_profileで.bashrcをソースすることでした:
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
ls
などはデフォルトでは色を使用しません。色を付けたい場合は、特定のオプションを設定する必要があります。これは、(リモートサーバー上の)$HOME/.bashrc
ファイルにエイリアスを設定することでグローバルに実行できます。
Set $PS1
(これは私の.bashrcからのものです。必要に応じて変更できます):
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;33m\]\u@\h\[\033[01;34m\] \W \\$\[\033[00m\] '
これは次のようになります。
エイリアスを設定します(この例では、ls
とgrep
、およびgit
と常に色付けしたい他のプログラムに適切なオプションを見つける必要があります):
alias grep='grep --color'
alias ls='ls --color=tty'