我正在使用 zsh,我正在尝试向变量添加一个新条目 ( /home/david/pear/bin
),PATH
但我不知道如何。
最让我困惑的是,我的文件中没有一个PATH
变量引用~/.zshrc
,而是echo $PATH
返回:
/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
所以在PATH
某处设置了一个变量。
实际上,使用 ZSH 允许您使用环境变量的特殊映射。所以你可以简单地做:
# 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
对我来说,这是一个非常简洁的功能,可以传播到其他变量。例子:
typeset -T LD_LIBRARY_PATH ld_library_path :
在这里,将此行添加到.zshrc
:
export PATH=/home/david/pear/bin:$PATH
编辑:这确实有效,但下面的答案更好,因为它利用了 ZSH 为变量提供的结构化接口,如$PATH
. 这种方法是标准的bash
,但据我所知,当 ZSH 提供更好的替代方案时,没有理由使用它。
您可以以最小的方式附加到您的。PATH
除非您附加多个元素,否则不需要括号。它通常也不需要引号。所以简单,简短的追加方法是:
path+=/some/new/bin/dir
这种小写语法path
用作数组,但也会影响其大写伙伴等效项PATH
(通过“绑定”到它typeset
)。
(请注意,不需要/想要no:
作为分隔符。)
然后测试新脚本/可执行文件的常见模式变为:
path+=$PWD/.
# or
path+=$PWD/bin
您可以在您的周围添加路径设置.zshrc
(如上),它自然会导致前面列出的设置优先(尽管您可能偶尔仍想使用“前置”表单path=(/some/new/bin/dir $path)
)。
以这种方式处理path
(作为数组)还意味着:无需执行 a
rehash
即可找到新路径的命令。
还可以将其视为编辑
(和其他内容)vared path
的动态方式。path
您可能只path
对这个问题感兴趣,但由于我们谈论的是导出和数组,请注意
通常无法导出数组。
您甚至可以防止PATH
重复条目
(请参阅
this
和this):
typeset -U path
您的路径中已经有一些条目的原因是由于您的系统外壳文件为您设置了路径。这在其他几篇文章中有介绍:
一个班轮,无需打开~/.zshrc
文件
echo -n 'export PATH=~/bin:$PATH' >> ~/.zshrc
或者
echo -n 'export PATH=$HOME/bin:$PATH' >> ~/.zshrc
要查看效果,请source ~/.zshrc
在同一选项卡中执行或打开一个新选项卡
添加了 ~/.zshrc 的路径
sudo vi ~/.zshrc
添加新路径
export PATH="$PATH:[NEW_DIRECTORY]/bin"
更新 ~/.zshrc
保存 ~/.zshrc
source ~/.zshrc
检查路径
echo $PATH
选项 1:将此行添加到 ~/.zshrc:
export "PATH=$HOME/pear/bin:$PATH"
之后,您需要运行source ~/.zshrc
以使您的更改生效或关闭此窗口并打开一个新窗口
选项 2:在终端控制台内执行它以仅将此路径添加到当前终端窗口会话。当您关闭窗口/会话时,它将丢失。
对我来说,PATH=$PATH:/path/to/file/bin
然后export PATH
工作。检查echo $PATH
。其他解决方案正在临时添加路径。
要验证您的新目录是否已正确添加,您可以使用
print -l $path
由于它的类型已知是一个数组