zshにディレクトリがまだ存在しない場合にのみ、私のPATHにディレクトリを追加する方法はありますか?

zshにディレクトリがまだ存在しない場合にのみ、私のPATHにディレクトリを追加する方法はありますか?

zshで私のPATHにディレクトリを追加する簡単な方法はありますか(ディレクトリがまだ存在していない場合のみ)? (またはより一般的にはすべての環境変数)。私は試した:

PATH+=/my/directory

...しかし、2回実行すると2回追加されます。

答え1

Inはzsh $PATH配列に関連付けられています(参照typeset -T$path。配列が次のように強制できます。ユニーク値は次のとおりです。

typeset -U path PATH

Uここでもnique属性が追加され、代わりに割り当てる$PATHと重複排除も発生します)$PATH$path

次に、パスを追加します。

path+=(~/foo)

すでに存在していても心配しないでください。

先頭に追加するには:

path=(~/foo "$path[@]")

または:

path[1,0]=~/foo

~/fooすでに含まれている場合は$path前方に移動します。

答え2

export -U PATH=~/foo${PATH:+:$PATH}スタートアップファイルの1つに追加してください。配列やPATHなどの区切り変数-Uで最初に表示される値のみを保持します。:

答え3

次の作業を行う必要があります。

if echo $PATH | grep :newpath: ; then doIfPresent; else doIfMissing; fi

2つの「:」で区切られた場合にのみ有効でnewpath、開始または終了にある場合も同様に考慮する必要があります。

よく。

関連情報