ZSHの環境変数拡張エラー

ZSHの環境変数拡張エラー

次のコマンドを実行します。

[$] echo 'export VAR="qwertyuiop"
export VAR="$VAR:asdf=ghjkl"' > /tmp/vars.sh
[$] source /tmp/vars.sh
[$] echo $VAR
/home/saga/qwertyuiopsdf=ghjkl

ご覧のとおり、変数の置換は期待どおりに機能しません。ここで問題は何ですか?

答え1

コロンはで修飾子として機能しますzsh。引用するこの参照

オプションの単語マーカーの後に、それぞれ「:」が続く次の修飾子の1つ以上を追加できます。特に明記しない限り、これらの修飾子はファイル名の生成とパラメータ拡張の結果にも適用されます。

ファイル名を絶対パスに変換する:必要に応じて、現在のディレクトリの前に次を追加します。(...)

要約すると、修飾子として機能し、拡張値の前に :a現在のディレクトリを追加します。VAR

修飾子が機能しないようにするには、変数を中かっこで囲みますVAR="${VAR}:asdf=ghjkl"

関連情報