ここで、 "dircolors"は "eval ``dircolors`" ``"を置き換えることができますか?

ここで、

lsコマンドの色を設定するために.bashrcをチェックし、これを見つけました。

export SHELL='/bin/bash'
 export LS_OPTIONS='--color=auto'
 eval "`dircolors`"
 alias ls='ls $LS_OPTIONS'

dircolorswithの代わりに使用すると問題がありますかeval?違いは何ですか?

ベストアンサー1

動作しませんeval dircolorsdircolors

あなたに必要なもの:

eval "$(dircolors)"

(または古代形態eval "`dircolors`"

つまり、評価すべき結果ですdircolorsdircolorsシェルで評価された出力コードは次のとおりです。

LS_COLORS='...'
export LS_COLORS

評価したいコードです。eval dircolors同様に、出力がリダイレクトされない場合にのみ実行されるdircolorsため、dircolors上記のシェルコードは最終的に表示され、どのシェルでも評価されません。

また、シェル構文にオプションのリストを$LS_OPTIONS含めたい場合(たとえば、thisなどを許可するなど)、次のように定義する必要があります。ls--exclude='*~'

ls() {
  eval 'command ls '"$LS_OPTIONS"' "$@"'
}

または以下を使用してzsh

alias ls='ls "${(Q@)${(z)LS_OPTIONS}}"'

スペースで区切られたオプションのリストを含めるには、bash 4.4+を使用してください。

ls() {
  local IFS=' '
  local -
  set -o noglob
  command ls $LS_OPTIONS "$@"
}

または以下を使用してzsh

alias ls='ls ${(s: :)LS_OPTIONS}'

おすすめ記事