どのようなdircolors
影響がありますか?コマンド専用ですかls
?dircolors
定義する前に呼び出す必要がありますかalias ls='ls --color'
?
答え1
dircolors
シェルから解釈されたコードを出力します。オプションがあるかどうかにかかわらず、-b
これはksh、zsh、bashなどのBourneに似たシェル、つまり、またはあるsh
すべての最新のシェルが他のシェル²をサポートしていないことを意味します。-c
csh
tcsh
出力コードは、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シェルは廃止され、対応`...`
するアイテムは廃止されました。