Unix の $PATH を変更するスクリプトを見たことがありますが、アイテムの重複を避けるために、次の手法を使用しています。
set path = ($path:q /some/new/path)
set path = ($path:q /another/directory)
set -f path = ($path:q)
仕組みがわかりません...
「-f」フラグのドキュメントには次のように書かれています:
ファイル名の生成を無効にする
私には意味がありません。そして、この奇妙な「:q」は何ですか?
ありがとう!
編集:
このスーパーユーザーの質問は、「:q」が修飾子であることを理解するのに役立ちました。そしてtcsh manは次のように説明しています。
`:q' 修飾子が置換に適用されると、変数は複数の単語に展開され、各単語は空白で区切られ、後でコマンドまたはファイル名の置換を防ぐために引用符で囲まれます
2番目の編集:
実際、「-f」だけで魔法がかかるようです。
~$ set days = (Sunday Monday Tuesday Monday Sunday)
~$ echo $days
Sunday Monday Tuesday Monday Sunday
~$ set -f days = ($days)
~$ echo $days
Sunday Monday Tuesday
それでも、「ファイル名の生成を無効にする」の結果がどうなるかわかりません。