澄清:ZSH 啟動/關閉文件

澄清:ZSH 啟動/關閉文件

我剛剛升級到 macOS Catalina,新的 shell 是 ZSH。因此,由於這是一個全新的開始,我嘗試使用別名、函數等來設定我的 shell 環境,就像在 bash 中一樣。當我在文件

然後從 讀取命令$ZDOTDIR/.zshenv。如果 shell 是登入 shell,則從 讀取命令/etc/zprofile,然後 讀取命令$ZDOTDIR/.zprofile。然後,如果 shell 是互動的,則從/etc/zshrc和 then讀取命令$ZDOTDIR/.zshrc。最後,如果shell是登入shell,/etc/zlogin$ZDOTDIR/.zlogin讀取。

令人困惑的部分...

  • 如果它是一個登入 shell,它會讀取/etc/zprofile然後$ZDOTDIR/.zprofile
  • 最後,如果shell是登入shell,/etc/zlogin$ZDOTDIR/.zlogin讀取。

如果我透過 SSH 連線到我的 Mac,它就是一個登入 shell。那麼既然我需要配置它,我需要(或應該)修改哪些檔案?我想幫助回答這個問題可能有助於理解.zprofile和之間的區別.zlogin所以,這裡的任何指導都會很棒。

答案1

檔案*profile*login檔案在相同的條件下讀取:當且僅當 shell 是登入 shell(並且不使用諸如 之類的選項呼叫no_rcs)。該手冊單獨列出了它們,因為它們的調用順序與文件相關*rc

這個名字*profile來自sh,伯恩外殼(其中 ksh、bash、dash 等大多是具有額外功能的重新實現)。這個名字*login來自於西施。 Zsh 更像 sh,但具有兩者的功能,所以我想這就是它支援這兩個名稱的原因。

*profile通常,使用或並不重要*login。但*profile檔案的優點是它們會在 之前讀取*rc,因此如果您的*rc內容取決於來自的設定*profile(例如,如果您呼叫位於新增至 的.zshrc目錄中的程式),則需要使用而不是。.zprofile$PATH*profile*login

因此,將登入時配置(通常主要是環境變數)放在 中~/.profile,並將互動式配置(提示、完成、鍵綁定、別名等)放在 中~/.zshrc。您很少需要其他啟動文件。

相關內容