如何更改 zsh 中的 PATH 变量?
How can I change PATH variable in zsh?
我想在 zsh 中更改我的 PATH 变量。
问题:我不明白我必须在 .zshrc
文件中的什么地方进行修改。
通常,我会寻找对 PATH 变量的赋值,然后从头开始设置我希望的值(保持所有系统二进制文件目录不变)。
我的 .zshrc 文件的第一行如下:
# If you come from bash you might have to change your $PATH.
# export PATH=$HOME/bin:/usr/local/bin:$PATH
# Path to your oh-my-zsh installation.
export ZSH="/Users/Sam/oh-my-zsh"
export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/13/bin
等等
我实际的 PATH 变量是:
/Library/Frameworks/Python.framework/Versions/3.9/bin:/Library/Frameworks/Python.framework/Versions/3.8/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Applications/Postgres.app/Contents/Versions/13/bin
我要删除python3.8所在的目录,多余
我的问题:
- 我是否必须更改 .zshrc 文件中的第 2 行或第 7 行?
- 第 2 行被注释掉了...它是否在终端开始时执行?
- 我试图注释掉第 7 行。但是 postgres 目录仍然保留在我不理解的 PATH 变量中。
.zshrc 位于主目录中。开头的点使其隐藏。从 ~ 目录中键入 ls -a 以查看它。像往常一样只编辑 运行 vim、nvim 等。
nvim ~/.zshrc
这是 Neovim 的命令。对于您的编辑器,sub nvim
以获得正确的命令。
进入后,您只需添加与从命令行添加的导出命令相同的命令。
export PATH=$PATH:/whatever/you/are/adding
编辑
删除路径变量:
- 首先,运行命令:
echo $PATH
从命令行。
接下来,将输出复制到剪贴板。
最后,在 .zshrc 文件的最后,添加以下内容:
export PATH=<paste-what-you-copied-here>
因为您没有在 =
之后引用 $PATH
,这会将路径设置为您粘贴的内容,不多也不少。在第一个示例中添加 $PATH:
只会将任何内容添加到已经存在的内容的末尾。
由于这使您可以访问路径数组中的每个项目,因此删除只是一个文字问题 highlight/select 以及您想要删除的任何内容。
最后,确保文件中只有一个地方在编辑PATH。如果不止一个,至少可以说结果会令人困惑。
就是说,我相信脚本 运行 是从上到下的,所以只有最后提到的内容应该保留。在某些情况下您可以利用这一点,但为此目的,一个就足够了。 XD
当您决定 fiddle 使用 .zshrc
中的 PATH 时要小心:由于文件由每个交互式子 shell 处理,因此每个子 shell 的 PATH 会变得越来越长,具有相同的多次出现在其中的目录。如果您稍后尝试查找与 PATH 相关的错误,这可能会成为一场噩梦。
由于您使用的是 zsh,您可以利用标量变量 PATH 在数组变量 path
中 镜像 ,并且您可以要求 zsh 保留数组中的条目是唯一的。
因此,我要做的第一件事就是放一个
typeset -aU path
在你的 .zshrc 中;这(由于镜像)也使 PATH 中的条目保持唯一。您可以将此语句放在任何地方,但在我第一次分配给 PATH
或 path
.
之前,我有它以便于维护
由您决定向 PATH
或 path
添加新条目的确切位置。按照变量中列出的顺序搜索条目。你要问自己两个问题:
是否有一些目录位于网络共享上,您有时可能会在其中出现访问延迟(由于网络状况不佳)?这些目录最好显示在路径末尾附近。
您的路径中是否有出现在多个目录中的命令?在这种情况下,路径搜索将始终只找到第一次出现。
最后,不要忘记您的更改将在 zsh 处理文件后看到。因此,您可以在编辑文件后创建一个新的子 shell,或者手动 source .zshrc
。
我想在 zsh 中更改我的 PATH 变量。
问题:我不明白我必须在 .zshrc
文件中的什么地方进行修改。
通常,我会寻找对 PATH 变量的赋值,然后从头开始设置我希望的值(保持所有系统二进制文件目录不变)。
我的 .zshrc 文件的第一行如下:
# If you come from bash you might have to change your $PATH.
# export PATH=$HOME/bin:/usr/local/bin:$PATH
# Path to your oh-my-zsh installation.
export ZSH="/Users/Sam/oh-my-zsh"
export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/13/bin
等等
我实际的 PATH 变量是:
/Library/Frameworks/Python.framework/Versions/3.9/bin:/Library/Frameworks/Python.framework/Versions/3.8/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Applications/Postgres.app/Contents/Versions/13/bin
我要删除python3.8所在的目录,多余
我的问题:
- 我是否必须更改 .zshrc 文件中的第 2 行或第 7 行?
- 第 2 行被注释掉了...它是否在终端开始时执行?
- 我试图注释掉第 7 行。但是 postgres 目录仍然保留在我不理解的 PATH 变量中。
.zshrc 位于主目录中。开头的点使其隐藏。从 ~ 目录中键入 ls -a 以查看它。像往常一样只编辑 运行 vim、nvim 等。
nvim ~/.zshrc
这是 Neovim 的命令。对于您的编辑器,sub nvim
以获得正确的命令。
进入后,您只需添加与从命令行添加的导出命令相同的命令。
export PATH=$PATH:/whatever/you/are/adding
编辑
删除路径变量:
- 首先,运行命令:
echo $PATH
从命令行。
接下来,将输出复制到剪贴板。
最后,在 .zshrc 文件的最后,添加以下内容:
export PATH=<paste-what-you-copied-here>
因为您没有在 =
之后引用 $PATH
,这会将路径设置为您粘贴的内容,不多也不少。在第一个示例中添加 $PATH:
只会将任何内容添加到已经存在的内容的末尾。
由于这使您可以访问路径数组中的每个项目,因此删除只是一个文字问题 highlight/select 以及您想要删除的任何内容。
最后,确保文件中只有一个地方在编辑PATH。如果不止一个,至少可以说结果会令人困惑。
就是说,我相信脚本 运行 是从上到下的,所以只有最后提到的内容应该保留。在某些情况下您可以利用这一点,但为此目的,一个就足够了。 XD
当您决定 fiddle 使用 .zshrc
中的 PATH 时要小心:由于文件由每个交互式子 shell 处理,因此每个子 shell 的 PATH 会变得越来越长,具有相同的多次出现在其中的目录。如果您稍后尝试查找与 PATH 相关的错误,这可能会成为一场噩梦。
由于您使用的是 zsh,您可以利用标量变量 PATH 在数组变量 path
中 镜像 ,并且您可以要求 zsh 保留数组中的条目是唯一的。
因此,我要做的第一件事就是放一个
typeset -aU path
在你的 .zshrc 中;这(由于镜像)也使 PATH 中的条目保持唯一。您可以将此语句放在任何地方,但在我第一次分配给 PATH
或 path
.
由您决定向 PATH
或 path
添加新条目的确切位置。按照变量中列出的顺序搜索条目。你要问自己两个问题:
是否有一些目录位于网络共享上,您有时可能会在其中出现访问延迟(由于网络状况不佳)?这些目录最好显示在路径末尾附近。
您的路径中是否有出现在多个目录中的命令?在这种情况下,路径搜索将始终只找到第一次出现。
最后,不要忘记您的更改将在 zsh 处理文件后看到。因此,您可以在编辑文件后创建一个新的子 shell,或者手动 source .zshrc
。