有没有办法将目录添加到我的 zsh 中的 PATH 仅当它不存在时?

And*_*ier 20 zsh path

仅当目录尚不存在时,zsh 中是否有一种简单的方法可以将目录添加到我的 PATH 中?(或更一般地说,任何环境变量)。我试过了:

PATH+=/my/directory
Run Code Online (Sandbox Code Playgroud)

...但如果执行两次,它会被添加两次。

Sté*_*las 42

Inzsh $PATH与数组相关联(参见typeset -T$path。您可以强制该数组具有唯一值:

typeset -U path
Run Code Online (Sandbox Code Playgroud)

然后,添加路径:

path+=(~/foo)
Run Code Online (Sandbox Code Playgroud)

不必担心它是否已经存在。

要将其添加到前面,请执行以下操作:

path=(~/foo "$path[@]")
Run Code Online (Sandbox Code Playgroud)

或者:

path[1,0]=~/foo
Run Code Online (Sandbox Code Playgroud)

如果~/foo已经在里面$path,就会把它移到前面。

  • 使用 `path=(~/foo "$path[@]")` 而不是 `path=(~/foo $path)` 有什么意义? (2认同)

llu*_*lua 5

添加export -U PATH=~/foo${PATH:+:$PATH}到您的启动文件之一。在-U只保留在阵列或某些的值的第一次出现:像PATH分隔的变量。