/home/david/pear/bin
)添加到PATH
变量中。我在~/.zshrc
文件中没有看到有关PATH
变量的引用,但执行echo $PATH
会返回:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
我知道 path
变量在某个地方被设置了。在 zsh 终端中,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
在 .profile
之后被引用,并覆盖了 .profile
中的所有内容。我花了一段时间才想明白这个问题。 - Khanh Nguyen-x
可以避免显式导出变量,使用-U
可以仅保留变量中的唯一值,默认情况下使用冒号,因此可以这样写:typeset -TUx PATH path
。 - Griefpath
和PATH
的使用,它们是两个不同的实体吗? - CousinCocaine在这里,将这行代码添加到.zshrc
文件中:
export PATH=/home/david/pear/bin:$PATH
编辑:这个确实可以工作,但是上面ony的答案更好,因为它利用了ZSH提供的类似$PATH
变量的结构化接口。这种方法在bash
中很常见,但据我所知,在ZSH提供更好的替代方案时没有理由使用它。
PATH="/home/david/pear/bin:/usr/bin:etc"
更改为PATH=/home/david/pear/bin:/usr/bin:etc
,这样它才能留在zshrc中。 - a7omitonexport PATH=$PATH:/path/to/dir
。 - sstruct您可以以最小的方式添加到您的PATH
中,除非您要添加多个元素,否则不需要使用括号。通常也不需要加引号。因此,添加的简单而简短的方法是:
path+=/some/new/bin/dir
这个小写语法使用 path
作为一个数组,但是它也影响到它的大写伴侣等价物 PATH
(通过 typeset
绑定)。
(请注意不需要/不想要使用:
作为分隔符。)
然后测试新脚本/可执行文件的常见模式变成:
path+=$PWD/.
# or
path+=$PWD/bin
您可以像上面那样在.zshrc
中散布路径设置,它会自然地导致较早列出的设置具有优先权(尽管您偶尔仍可能希望使用“prepend”形式path=(/some/new/bin/dir $path)
)。
这种方式处理path
(作为数组)也意味着:无需执行rehash
即可找到新路径命令。
还可以查看vared path
作为动态编辑path
(和其他内容)的方式。
您可能只对此问题的path
感兴趣,但由于我们正在谈论导出和数组,请注意通常无法导出数组。
typeset -U path
你的路径已经有一些条目是由你的系统shell文件为你设置路径所致。这在其他几篇帖子中都有涉及:
path+='my/path' # for fun
。如果路径中有空格的话很显然要用引号,但如果有注释就不那么明显了。 - Franklin YuPATH+=:/Users/path/to/my/folder
- Emmett R.exec zsh
,因为我使用 oh-my-zsh
的插件。每次执行时路径都会变长。我应该定期“默认”路径吗? - Timotypeset -aU path
。 - C. Sederqvist不用打开~/.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
检查PATH
echo $PATH
选项1: 在~/.zshrc文件中添加这一行:
export "PATH=$HOME/pear/bin:$PATH"
之后你需要运行 source ~/.zshrc
以使你的更改生效,或者关闭当前窗口并打开一个新窗口。
选项2:在终端控制台内执行此命令,将此路径添加到当前终端窗口会话中。当你关闭该窗口/会话时,它将丢失。
如果你使用的是macOS(我使用的是Monterey 12.3.1),你可能像我一样在象征性地拔头发。上面的所有指令在终端会话中都有效,但无论我如何导出,它都无法持久化。此外,我找不到任何.zshrc文件。
事实证明,Apple的做法不同。你需要编辑的文件是etc/paths
。你可以简单地运行sudo nano /etc/paths
,并在新的一行中添加你的路径。然后,只需重新启动终端就可以了。
etc/paths
这个文件存在。使用它比我过去用过的所有导出 PATH 的方法都要简单得多。 - jamesnotjim我使用的是 Monterey 12.4,而且唯一能够更改路径的方法是使用辅助函数。在 nano 中编辑文本文件没有任何效果。
# append
path+=('/foo/bar/yourpath')
# export to sub-processes
export PATH
对于我而言,PATH=$PATH:/path/to/file/bin
然后 export PATH
生效了。可以通过 echo $PATH
检查。其他解决方案是临时添加路径。
为了验证您的新目录已正确添加,您可以使用
print -l $path
由于其类型已知为数组,因此感谢它
.zshenv
中进行,而不是在.zshrc
中进行… - Rmano