Oh-My-ZSH PATH 的位置不在 .zshrc 中,但在回显时仍在路径中
Oh-My-ZSH PATH has locations that aren't in .zshrc but are still in path upon echo
编辑:
我现在已经删除了 .zshrc
文件第 1 行的 $HOME/bin:/usr/local/bin:
部分。所以现在该行显示为 export PATH=$PATH
。这摆脱了重复项,但它仍然没有解释 Mono 和 Postgres 被添加到路径中的位置。
以下是路径以可读格式输出的内容:
/usr/local/bin:
/usr/bin:
/bin:
/usr/sbin:
/sbin:
/Library/Frameworks/Mono.framework/Versions/Current/Commands:
/Applications/Postgres.app/Contents/Versions/latest/bin
是否有另一个文件正在处理这些路径的导出?
原文:
所以我实在想不出一个很好的标题,所以如果有人有什么建议请在评论中提出。
这是我的问题。我刚刚使用以下命令将 .zshrc
文件重置为默认模板。
cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc
所以这是我 .zshrc
的文件内容
export PATH=$HOME/bin:/usr/local/bin:$PATH
export ZSH=$HOME/.oh-my-zsh
ZSH_THEME="agnoster"
plugins=(
git
)
source $ZSH/oh-my-zsh.sh
以下文件要么完全为空,要么全部被注释掉:.zprofile
、.bash_profile
、.bashrc
.
在我的终端中 运行 source .zshrc
命令后跟 echo $PATH
命令之后,这是我的输出。
/Users/jrobinson/bin:/usr/local/bin:/Users/jrobinson/bin:/usr/local/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Frameworks/Mono.framework/Versions/Current/Commands:/Applications/Postgres.app/Contents/Versions/latest/bin
让我们稍微格式化一下,这样我们就可以看到发生了什么:
/Users/jrobinson/bin:
/usr/local/bin:
/Users/jrobinson/bin:
/usr/local/bin:
/usr/local/bin:
/usr/bin:
/bin:
/usr/sbin:
/sbin:
/Library/Frameworks/Mono.framework/Versions/Current/Commands:
/Applications/Postgres.app/Contents/Versions/latest/bin
如您所见,有些东西在重复,例如 /usr/local/bin
& /Users/jrobinson/bin
。
此外,我曾在我的计算机上安装过 Postgres,但现在已不再安装。我仍然拥有并使用 Mono,但我不知道 它在何处 添加到我的路径中。
我在路径中唯一定义的是:export PATH=$HOME/bin:/usr/local/bin:$PATH
那么为什么我会收到这些重复的东西?我假设这是因为某些文件中某处有一些重复代码,我无法确定这些重复发生的位置,因此我可以删除它们并清理我的 PATH。
ALSO 这真的很奇怪,我的电脑上也安装了 Composer,即使我没有定义 Composer 我也可以使用 composer
命令在我 /.composer/vendor/bin
.
的道路上
path_helper
是构建PATH
环境变量的助手。这是 macOS 独有的。
man path_helper
Files in these directories should contain one path element per line.
Prior to reading these directories, default PATH
and MANPATH
values are
obtained from the files /etc/paths
and /etc/manpaths
respectively.
GUI 应用程序可以将文件放入这些路径。 shell 启动时,path_helper
会将其中的值添加到 PATH
或 MANPATH
中。重点似乎是 通过在其中创建符号链接来避免污染 /usr/bin
或 /usr/local/bin
。
对于 bash,path_helper
在 shell 启动时在 /etc/profile
中调用。对于 zsh,path_helper
在 /etc/zprofile
.
中被调用
/etc/profile
的内容:
# System-wide .profile for sh(1)
if [ -x /usr/libexec/path_helper ]; then
eval `/usr/libexec/path_helper -s`
fi
if [ "${BASH-no}" != "no" ]; then
[ -r /etc/bashrc ] && . /etc/bashrc
fi
path_helper -s
-s Generate Bourne shell commands on stdout. This is the default if
SHELL does not end with "csh".
参考资料
man path_helper
在全新 ubuntu 20.04 安装和整理我的 .zshrc 文件后,即使在 .zshrc 文件中注释掉它们之后,我仍能在 $path 中看到位置。更令我惊讶的是,那些显示在 bash $path 以及在那里声明 none 的地方(检查下图中的 DJANGO_HOME)。每次更改后多次使用 source 命令,但没有结果。
浪费了宝贵的10分钟时间。然后发现在新终端上一切正常 window。所以杀死以前的终端并移动到一个新的终端解决了它。
编辑:
我现在已经删除了 .zshrc
文件第 1 行的 $HOME/bin:/usr/local/bin:
部分。所以现在该行显示为 export PATH=$PATH
。这摆脱了重复项,但它仍然没有解释 Mono 和 Postgres 被添加到路径中的位置。
以下是路径以可读格式输出的内容:
/usr/local/bin:
/usr/bin:
/bin:
/usr/sbin:
/sbin:
/Library/Frameworks/Mono.framework/Versions/Current/Commands:
/Applications/Postgres.app/Contents/Versions/latest/bin
是否有另一个文件正在处理这些路径的导出?
原文:
所以我实在想不出一个很好的标题,所以如果有人有什么建议请在评论中提出。
这是我的问题。我刚刚使用以下命令将 .zshrc
文件重置为默认模板。
cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc
所以这是我 .zshrc
export PATH=$HOME/bin:/usr/local/bin:$PATH
export ZSH=$HOME/.oh-my-zsh
ZSH_THEME="agnoster"
plugins=(
git
)
source $ZSH/oh-my-zsh.sh
以下文件要么完全为空,要么全部被注释掉:.zprofile
、.bash_profile
、.bashrc
.
在我的终端中 运行 source .zshrc
命令后跟 echo $PATH
命令之后,这是我的输出。
/Users/jrobinson/bin:/usr/local/bin:/Users/jrobinson/bin:/usr/local/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Frameworks/Mono.framework/Versions/Current/Commands:/Applications/Postgres.app/Contents/Versions/latest/bin
让我们稍微格式化一下,这样我们就可以看到发生了什么:
/Users/jrobinson/bin:
/usr/local/bin:
/Users/jrobinson/bin:
/usr/local/bin:
/usr/local/bin:
/usr/bin:
/bin:
/usr/sbin:
/sbin:
/Library/Frameworks/Mono.framework/Versions/Current/Commands:
/Applications/Postgres.app/Contents/Versions/latest/bin
如您所见,有些东西在重复,例如 /usr/local/bin
& /Users/jrobinson/bin
。
此外,我曾在我的计算机上安装过 Postgres,但现在已不再安装。我仍然拥有并使用 Mono,但我不知道 它在何处 添加到我的路径中。
我在路径中唯一定义的是:export PATH=$HOME/bin:/usr/local/bin:$PATH
那么为什么我会收到这些重复的东西?我假设这是因为某些文件中某处有一些重复代码,我无法确定这些重复发生的位置,因此我可以删除它们并清理我的 PATH。
ALSO 这真的很奇怪,我的电脑上也安装了 Composer,即使我没有定义 Composer 我也可以使用 composer
命令在我 /.composer/vendor/bin
.
path_helper
是构建PATH
环境变量的助手。这是 macOS 独有的。
man path_helper
Files in these directories should contain one path element per line.
Prior to reading these directories, default
PATH
andMANPATH
values are obtained from the files/etc/paths
and/etc/manpaths
respectively.
GUI 应用程序可以将文件放入这些路径。 shell 启动时,path_helper
会将其中的值添加到 PATH
或 MANPATH
中。重点似乎是 通过在其中创建符号链接来避免污染 /usr/bin
或 /usr/local/bin
。
对于 bash,path_helper
在 shell 启动时在 /etc/profile
中调用。对于 zsh,path_helper
在 /etc/zprofile
.
/etc/profile
的内容:
# System-wide .profile for sh(1)
if [ -x /usr/libexec/path_helper ]; then
eval `/usr/libexec/path_helper -s`
fi
if [ "${BASH-no}" != "no" ]; then
[ -r /etc/bashrc ] && . /etc/bashrc
fi
path_helper -s
-s Generate Bourne shell commands on stdout. This is the default if SHELL does not end with "csh".
参考资料
man path_helper
在全新 ubuntu 20.04 安装和整理我的 .zshrc 文件后,即使在 .zshrc 文件中注释掉它们之后,我仍能在 $path 中看到位置。更令我惊讶的是,那些显示在 bash $path 以及在那里声明 none 的地方(检查下图中的 DJANGO_HOME)。每次更改后多次使用 source 命令,但没有结果。
浪费了宝贵的10分钟时间。然后发现在新终端上一切正常 window。所以杀死以前的终端并移动到一个新的终端解决了它。