ZSH環境変数

ZSH環境変数

これらの2行の違いは何ですか?

export XDG_CONFIG_HOME="$HOME/.config"
export XINITRC="${XDG_CONFIG_HOME:-$HOME/.config}/x11/xinitrc"

そして、次の2行は次のとおりです。

export XDG_CONFIG_HOME="$HOME/.config"
export XINITRC="${XDG_CONFIG_HOME}/x11/xinitrc"

つまり、$XDG_CONFIG_HOME2番目の例のように、変数を個別に参照することと、次のように使用することの違いは何ですか${XDG_CONFIG_HOME:-$HOME/.config}?変数${XDG_CONFIG_HOME}で変数を参照する前にすでに変数値を設定しているため、パスを繰り返すことは重複しているようですXINITRC

ベストアンサー1

バラよりinfo zsh 'Parameter Expansion':

${NAME-WORD}
${NAME:-WORD}
NAMEが設定されている場合、または2番目の形式で空でない場合はその値が置き換えられ、それ以外の場合はWORDに置き換えられます。 2番目の形式ではNAMEを省略できます。この場合は常にWORDが代わりに使用されます。

これはBourneシェル(70年代後半から)から継承された機能であり、すべての同様のBourneまたはPOSIXシェルに存在します(省略の最後の部分を除く)。名前これはzsh特定の拡張子です。)

null 以外の場合は変数の値に展開され、それ以外の場合は${XDG_CONFIG_HOME:-$HOME/.config}変数の値に展開されます。XDG_CONFIG_HOME$HOME/.config

上記で空でないことが保証されていると定義されている点を考慮すると、XDG_CONFIG_HOME本当に重複します。

おすすめ記事