2 回答

TA貢獻(xiàn)1830條經(jīng)驗(yàn) 獲得超9個(gè)贊
長話短說
$PATH
在 macOS 中,如果您將任何在 macOS 上修改的代碼放入內(nèi).zshenv
,它將被覆蓋。您應(yīng)該將其放入.zshrc
或其他地方,然后由您的.zshrc
.
完整解釋
當(dāng)獲取 zsh 時(shí),文件按以下順序讀取:
etc/zshenv/
->?$ZDOTDIR/.zshenv/
->?etc/zprofile/
->?$ZDOTDIR/.zprofile/
->?etc/zshrc/
->?$ZDOTDIR/.zshrc/
->?etc/zlogin/
->$ZDOTDIR/.zlogin/
在 macOS 中/etc/zprofile
,源腳本根據(jù)這些文件的內(nèi)容覆蓋 $PATH:
/etc/paths /etc/paths.d /etc/manpaths /etc/manpaths.d
因此,您不應(yīng)該將任何更改的行放入$PATH
您的 中$ZDOTDIR/.zshenv
,而是放入此后的任何文件中(例如$ZDOTDIR/.zshrc
)。不要編輯中的文件/etc/
!

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超9個(gè)贊
我有完全相同的問題,并且我找不到任何其他來源來解釋為什么 conda 環(huán)境被附加而不是前置。我已將以下代碼添加到我的 .bash_profile (在 conda 初始化之后),這會(huì)翻轉(zhuǎn)所有路徑位置的順序。這絕對(duì)是一個(gè)糟糕的做法,但對(duì)于遇到同樣問題的人來說,這可能是一個(gè)快速解決方案。
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
正如評(píng)論中所述,我不會(huì)添加位置“/Users/XXX/opt/anaconda3/condabin”,因?yàn)樗鼤?huì)弄亂我的環(huán)境位置,該位置位于倒數(shù)第二個(gè)位置。請(qǐng)檢查您自己的路徑變量并做出相應(yīng)的決定。
編輯:如果有人有更好的解決方案,請(qǐng)告訴我!
添加回答
舉報(bào)