我使用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
所以我知道路径变量是在某处设置的。zsh终端的PATH变量设置/修改在哪里?
我使用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
所以我知道路径变量是在某处设置的。zsh终端的PATH变量设置/修改在哪里?
当前回答
我在Monterey 12.4上,我可以改变路径的唯一方法是使用helper函数。在nano中编辑文本文件毫无用处
# append
path+=('/foo/bar/yourpath')
# export to sub-processes
export PATH
其他回答
要验证新目录已正确添加,可以使用
打印-l $path
因为它的类型是一个数组
一行,不用开口~/。zshrc中
echo -n 'export PATH=~/bin:$PATH' >> ~/.zshrc
or
echo -n 'export PATH=$HOME/bin:$PATH' >> ~/.zshrc
要查看效果,请执行source ~/。ZSHRC在同一选项卡或打开一个新的选项卡
您可以以最小的方式附加到您的PATH。不需要 括号,除非你要添加多个元素。它还 通常不需要引号。所以简单,简短的追加方法是:
path+=/some/new/bin/dir
这种小写语法使用path作为数组 影响它的大写伙伴等效PATH(它是 “bound”通过排版)。
(请注意,no:是需要/想要作为分隔符。)
常用交互用法
然后测试一个新脚本/可执行文件的常见模式变成:
path+=$PWD/.
# or
path+=$PWD/bin
配置常用用法
您可以在.zshrc周围添加路径设置(如上所述),这自然会导致前面列出的设置优先(尽管您可能偶尔仍想使用“prepend”形式path=(/some/new/bin/dir $path))。
相关信息
以这种方式处理path(作为数组)也意味着:不需要执行 重新哈希以找到新路径的命令。
还可以看看vared path作为一种动态编辑路径的方法 (和其他事情)。
你可能只对这个问题的路径感兴趣,但是既然 注意,我们讨论的是导出和数组 数组一般不能导出。
您甚至可以防止PATH接收重复的条目 (参考 这 这):
typeset -U path
路径预填充
您的路径中已经有一些条目的原因是由于您的系统shell文件为您设置了路径。这在其他几篇文章中有涉及:
为什么以及在哪里设置$PATH env变量? $PATH的源在哪里?我在.zshrc中找不到它
我在Monterey 12.4上,我可以改变路径的唯一方法是使用helper函数。在nano中编辑文本文件毫无用处
# append
path+=('/foo/bar/yourpath')
# export to sub-processes
export PATH
为~/.zshrc添加路径 Sudo vi ~/.zshrc 添加新路径 导出路径= " $路径:NEW_DIRECTORY / bin” 更新~ / . zshrc 保存~ / . zshrc 源~ / . zshrc 检查路径 回声路径美元