2 回答
TA贡献1830条经验 获得超9个赞
长话短说
$PATH
在 macOS 中,如果您将任何在 macOS 上修改的代码放入内.zshenv
,它将被覆盖。您应该将其放入.zshrc
或其他地方,然后由您的.zshrc
.
完整解释
当获取 zsh 时,文件按以下顺序读取:
etc/zshenv/
-> $ZDOTDIR/.zshenv/
-> etc/zprofile/
-> $ZDOTDIR/.zprofile/
-> etc/zshrc/
-> $ZDOTDIR/.zshrc/
-> etc/zlogin/
->$ZDOTDIR/.zlogin/
在 macOS 中/etc/zprofile
,源脚本根据这些文件的内容覆盖 $PATH:
/etc/paths /etc/paths.d /etc/manpaths /etc/manpaths.d
因此,您不应该将任何更改的行放入$PATH
您的 中$ZDOTDIR/.zshenv
,而是放入此后的任何文件中(例如$ZDOTDIR/.zshrc
)。不要编辑中的文件/etc/
!
TA贡献1784条经验 获得超9个赞
我有完全相同的问题,并且我找不到任何其他来源来解释为什么 conda 环境被附加而不是前置。我已将以下代码添加到我的 .bash_profile (在 conda 初始化之后),这会翻转所有路径位置的顺序。这绝对是一个糟糕的做法,但对于遇到同样问题的人来说,这可能是一个快速解决方案。
locations=($(echo $PATH | tr ":" "\n"))
path=""
for (( idx=${#locations[@]}-2 ; idx>=0 ; idx-- )) ; do
# Skip the last path location since this would put the general /Users/XXX/opt/anaconda3/condabin first
# To not do this change the -2 to -1
path="${path}:${locations[$idx]}"
done
path="${path:1}"
PATH=$path
export $PATH
正如评论中所述,我不会添加位置“/Users/XXX/opt/anaconda3/condabin”,因为它会弄乱我的环境位置,该位置位于倒数第二个位置。请检查您自己的路径变量并做出相应的决定。
编辑:如果有人有更好的解决方案,请告诉我!
添加回答
举报