问题描述
我正在使用zsh,并且尝试向PATH
变量添加新条目(/home/david/pear/bin
),但是我不知道如何。
最让我困惑的是,我的~/.zshrc
文件中没有对PATH
变量的单一引用,但是执行echo $PATH
返回:
/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
因此,将PATH
变量设置在某处。
最佳解决思路
这里:
export PATH=/home/david/pear/bin:$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 :
第三种解决思路
您可以以最小的方式附加到PATH
。除非要附加多个元素,否则不需要括号。它通常也不需要引号。因此,添加的简单,简短方法是:
path+=/some/new/bin/dir
常用用法
然后,用于测试新脚本/可执行文件的通用模式变为:
path+=$PWD/.
# or
path+=$PWD/bin
此lower-case语法使用path
作为数组,但也会影响其upper-case合作伙伴等效的PATH
(通过typeset
为其”bound”)。
(请注意,不需要/不需要:
作为分隔符。)
相关花絮
以这种方式(作为数组)对待path
也意味着:无需执行rehash
即可找到新路径的命令。
另请参阅vared path
,这是一种动态方式来编辑path
和其他内容。
您可能只对path
感兴趣,但是由于我们在谈论导出和数组,请注意arrays generally cannot be exported.
您甚至可以阻止PATH
接受重复的条目(请参阅this和this):
typeset -U path
第四种思路
一根衬纸,而不打开~/.zshrc
文件
echo -n 'export PATH=~/bin:$PATH' >> ~/.zshrc
要么
echo -n 'export PATH=$HOME/bin:$PATH' >> ~/.zshrc
要查看效果,请在同一标签中执行source ~/.zshrc
或打开一个新标签
第五种思路
选项1:将此行添加到〜/.zshrc中:
export "PATH=$HOME/pear/bin:$PATH"
之后,您需要运行source ~/.zshrc
才能使更改生效或关闭此窗口并打开一个新窗口
选项2:在终端控制台中执行它,以仅将此路径添加到当前终端窗口会话中。当您关闭窗口/会话时,它将丢失。
第六种思路
-
添加了〜/.zshrc的路径
sudo vi ~/.zshrc
添加新路径
export PATH="$PATH:[NEW_DIRECTORY]/bin"
-
更新〜/.zshrc保存〜/.zshrc
source ~/.zshrc
-
检查路径
echo $PATH