在ZSH中添加一个新的条目到PATHvariables

我正在使用zsh,我试图向PATHvariables添加一个新条目( /home/david/pear/bin ),但是我不知道如何。

最让我困惑的是在我的~/.zshrc文件中没有一个PATHvariables的引用,但是执行echo $PATH返回:

 /usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games 

所以一个PATHvariables正在被设置。

这里:

 export PATH=/home/david/pear/bin:$PATH 

实际上,使用ZSH允许您使用环境variables的特殊映射。 所以你可以简单地做:

 # append path+=('/home/david/pear/bin') # or prepend path=('/home/david/pear/bin' $path) # export to sub-processes (make it inherited by child processes) export PATH 

对我来说,这是一个非常整洁的function,可以传播到其他variables。 例:

 typeset -T LD_LIBRARY_PATH ld_library_path : 

您可以以最简单的方式追加到PATH中。 除非你追加多个元素,否则不需要括号。 它通常也不需要引号。 所以简单,简单的追加方法是:

 path+=/some/new/bin/dir 

常见用法

那么testing新脚本/可执行文件的常见模式就是:

 path+=$PWD/. # or path+=$PWD/bin 

这种小写的语法是使用path作为数组 ,但也会影响其大写伙伴等效PATH (通过typeset “绑定到”)。

(请注意, 不需要/需要作为分隔符 。)

相关花絮

以这种方式处理path (作为一个数组)也意味着: 不需要进行重新rehash来获得新的path命令。

也可以看看vared path作为编辑path和其他东西的dynamic方法

您可能只对此问题感兴趣,但由于我们正在讨论导出和数组,所以请注意数组通常不能导出。

你甚至可以阻止PATH重复input (参考这个和这个 ):

 typeset -U path