有没有办法仅在 zsh 中尚不存在的情况下将目录添加到我的 PATH 中?

有没有办法仅在 zsh 中尚不存在的情况下将目录添加到我的 PATH 中?

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

PATH+=/my/directory

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

答案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}到您的启动文件之一。仅保留数组或某些分隔变量(如 PATH)-U中第一次出现的值。:

答案3

你必须做类似的事情:

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

仅当由两个“:”分隔时才有效newpath,需要类似地考虑它位于开头或结尾的情况。

呃。

相关内容