dircolors効果

dircolors効果

どのようなdircolors影響がありますか?コマンド専用ですかlsdircolors定義する前に呼び出す必要がありますかalias ls='ls --color'

答え1

dircolorsシェルから解釈されたコードを出力します。オプションがあるかどうかにかかわらず、-bこれはksh、zsh、bashなどのBourneに似たシェル、つまり、またはあるshすべての最新のシェルが他のシェル²をサポートしていないことを意味します。-ccshtcsh

出力コードは、optionsで呼び出されたときに色付きの出力をカスタマイズする$LS_COLORSためにGNU実装によって照会される環境変数を設定するようにシェルに指示します。ls--color

Bourne²などのシェルでは、次のことを行います。

eval "$(dircolors -b)"

評価出力dircolors

(t)cshから:

eval "`dircolors -c`"

この$LS_COLORS変数はls --color呼び出し前に設定する必要がありますが、使用されるエイリアスや関数定義とは無関係ですls。だから:

alias ls 'ls --color' # (t)csh
alias ls='ls --color' # Korn-like shells
ls() command ls --color "$@" # most Bourne-like shells
ls() { command ls --color "$@"; } # all Bourne-like shells

ペア呼び出しの前後に配置でき、eval違いはありません。

環境を更新するので、そのeval行を~/.profile/ ~/.login(またはログインシェルの同等のログインセッションカスタマイズファイル)に入れると、ログインセッションごとに一度だけ設定され、エイリアス/関数はシェルカスタマイズファイル(、、、~/.zshrc... )です。~/.cshrc~/.bashrc

とにかく、使用しないと、dircolorsまだ基本色である色が得られます。dircolorsカスタムファイルなしで使用すると、他のデフォルト値が適用されます。

次の手順でこれらのデフォルト値を編集できます。

dircolors -p > ~/.config/dircolors

次のコマンドを使用してファイルを編集し、シェル起動ファイルの行を変更します。

eval "$(dircolors ~/.config/dircolors)"

1 他のシェルには多くの解決策がありますが、解決策は自分に依存します。たとえば、最新fishバージョンの場合は、次のことができます。set -x LS_COLORS "$(sh -c "$(dircolors -b)"'; printf %s "$LS_COLORS"')"

²Bourne-shell自体は除外さ$(...)れますが、Bourneシェルは廃止され、対応`...`するアイテムは廃止されました。

関連情報