dircolors myfile は、LS_COLORS を画面の空の文字列に設定します。

dircolors myfile は、LS_COLORS を画面の空の文字列に設定します。

私の.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

ただし、以前のバージョンではdircolorsTERMパラメーターの名前グロービングはサポートされていません。たとえば、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をサポートしていない可能性があります。

関連情報