次のコマンドを実行します。
[$] 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"
。