私の.bashrcにはカラースキームを設定する行があります。
eval $(dircolors colorfile)
これは期待どおりに機能し、 "colorfile"によって生成された正しい文字列にLS_COLORSを設定します。
screen を使用すると bashrc ファイルを再読み込みしますが、色が失われます。テストするためにdircolors colorfile
画面のコマンドラインから実行します
LS_COLORS='';
export LS_COLORS
この問題はかなり簡単に修正できますが、dircolorが画面と画面の外で異なる動作をする原因は何ですか?私は盲目的にファイルを解析し、文字列を出力すると思いました。しかし、一部の環境変数などを確認する必要がありますか?
どんな手がかりがありますか?以下は、いくつかの追加情報です。私の.screenrcは空で、gnome-terminalを使用しています。 Dircolorsのバージョンは8.25です。
私はこのwhich
コマンドを使用して、2つの異なるバイナリを使用していないことを確認します(使用しません)。 $?の価値を確認してみました。 dircolorsを実行した後、どちらの場合も0です。
答え1
画面内の値が$TERM
異なります。したがって、colorfile
ファイルはおそらく次に終了する必要があります。
TERM screen*
TERM xterm*
答え2
ただし、以前のバージョンではdircolors
TERMパラメーターの名前グロービングはサポートされていません。たとえば、xterm*
noの場合は、サポートする端末タイプを明示的にリストする必要があります(1行に1つ)。
TERM xterm
TERM xterm-16color
TERM xterm-256color
TERM xterm-color
etc.
お客様のバージョンが名前のグロービングをサポートしているかどうかをすばやく確認するにはdircolors
:
dircolors --print-database | grep TERM
用語リストで1つ以上のワイルドカード名を確認してください。たとえば、次のようになります。
TERM *color*
TERM xterm*
*color*
用語リストにワイルドカード名(たとえば、など)が表示されない場合は、そのバージョンが名前のxterm*
グロービングdircolors
をサポートしていない可能性があります。