bash中括弧拡張は引用符内で実行できますか?

bash中括弧拡張は引用符内で実行できますか?

私を乾燥させるためにbashrcこれを変えてみました。

CDPATH=".:~/Development:~/Development/resources:~"

これに関して、

CDPATH=".:~/Development{,/resources}:~"

ただし、引用符付き文字列内では中括弧の拡張は行われていません。これを達成する方法はありますか?

ベストアンサー1

はい、実際には次のようになります。

set . ~/Development{,/resources} ~
IFS=:; CDPATH="$*"

特殊引数は、各位置引数の間の"$*"最初の文字を置き換えます。$IFSしたがって、必要なパラメータを別々のパラメータに拡張すると、割り当て時setに必要に応じて適切な区切り文字をすばやく入力できます。

提案されているように値を保存/復元する方法についていくつかのガイドラインが利用可能な場合は、次のことが$IFSできます。

CDPATH=$IFS
set . ~/Development{,/resources} ~
IFS=:${IFS+;IFS=\$CDPATH}
eval 'set "$*"; unset IFS'"
      $IFS;    CDPATH=\$1"

時には環境をきれいに保つためにいくつかの調整をする価値があります。パラメータが設定されているかどうかにかかわらず、環境に影響を与え、それに応じて他の方法で影響を与える場合は注意してください。

ただし、これらの予防措置は、継続的な制御を保証できない環境でのみ実際に必要です。つまり、自分のrcファイルでこれを行う必要はありません。このような状況では、恒久的な制御がほぼ保証されます。(そしてしなければならない)自分に合った特別なシェルパラメータを設定してください。

おすすめ記事