我的.zshenv:
export ZDOTDIR=~/dotfiles
export XDG_CONFIG_HOME=~/dotfiles/.config
export MY_ENVIRONMENT="PERSONAL"
我在 ~/dotfiles 中的 .zshrc:
zsh ${ZDOTDIR}/startup.sh
然后啟動加載到一個名為.zshrc.personal我所有配置的檔案中。如果我在那里放兩條陳述句:
echo "hello"
alias home="cd ~/"
然后 source 或重新啟動我的 shell,我看到 echo 陳述句,但別名不起作用。
我猜這與 zsh 的默認 mac 版本存在某種沖突,但我不知道如何修復它。我沒有 .zshrc 在 ~/.
我現在不在可以重新安裝 Xcode 開發人員工具的地方,但是我們認為這可以解決問題嗎?
uj5u.com熱心網友回復:
這一行:
zsh ${ZDOTDIR}/startup.sh
將啟動一個子zsh行程。該行程將startup.sh在其環境中執行,然后退出到父行程。
這可以通過一些除錯列印輸出更容易看到。$$是當前行程的行程 id (pid),并且$PPID是其父行程的行程 id:
echo Before current:$$ parent:$PPID
zsh ${ZDOTDIR}/startup.sh
echo After current:$$ parent:$PPID
加上類似的東西startup.sh,這會列印:
Before current:2737 parent:2586
During current:2738 parent:2737
After current:2737 parent:2586
子行程無法更改其父行程的環境,因此別名和類似更改被有效地丟棄。
一種答案是在腳本中原始碼,這樣代碼在同一個環境中執行;不涉及子行程:
. ${ZDOTDIR}/startup.sh
除錯列印輸出:
Before current:2813 parent:2586
During current:2813 parent:2586
After current:2813 parent:2586
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/529449.html
