在 Mac 上使用 zsh 做為預設 shell

從 macOS Catalina 版開始,Mac 使用 zsh 做為預設登入 shell 和互動 shell。您也可以在舊版 macOS 中將 zsh 設為預設 shell。

依預設,Mac 使用 zsh 或 bash 做為登入 shell 和互動 shell 的命令列解譯器:

zsh 與 Bourne shell(sh)高度相容,與 bash 大部分相容(有部分差異)。如需 zsh 及其完整命令列完成系統的相關資訊,請在終端機中輸入 man zsh
  

如何變更預設 shell

無論使用者帳號是配置為使用 zsh(建議)、bash 或其他 shell,都可以從「使用者與群組」偏好設定或命令列變更預設 shell。

從「使用者與群組」偏好設定

  1. 選擇「蘋果」選單  >「系統偏好設定」,然後按一下「使用者與群組」。
  2. 按一下鎖頭 ,然後輸入帳號名稱和密碼。
  3. 按住 Control 鍵並在左側的使用者列表中點選您的使用者名稱,然後選擇「進階選項」。
  4. 從「登入 shell」選單中選擇 shell,然後按一下「好」以儲存變更。

從命令列

在終端機中輸入 $ chsh -s path,其中 path 是 /etc/shells 中列出的其中一個 shell 路徑,例如 /bin/zsh、/bin/bash、/bin/csh、/bin/dash、/bin/ksh、/bin/sh 或 /bin/tcsh。
  

如何使用不同的 shell,而不變更預設 shell

如果您不想讓終端機在新的終端機視窗和標籤頁中使用預設登入 shell:

  1. 開啟「終端機」,然後選擇「終端機」>「偏好設定」。
  2. 從「一般」面板中選取「指令(完整路徑)」。
  3. 在所提供的欄位中,輸入 /etc/shells 中列出的其中一個 shell 路徑,例如 /bin/zsh、/bin/bash、/bin/csh、/bin/dash、/bin/ksh、/bin/sh 或 /bin/tcsh。

如果您呼叫 bash shell,而 macOS Catalina 是配置為使用不同的 shell,您會看到預設互動 shell 現在是 zsh 的訊息。若要將此警告靜音,可以將下列指令加入 ~/.bash_profile 或 ~/.profile 中:

export BASH_SILENCE_DEPRECATION_WARNING=1


如何切換至 zsh 描述檔和提示

舉例來說,如果您要使用 bash 描述檔來設定環境變數、替身或路徑變數,則應切換為使用 zsh 同等項目。例如:

  • .zprofile 等同於 .bash_profile,會在登入時執行,包括透過 SSH
  • .zshrc 等同於 .bashrc,會針對每個新的終端機工作階段執行

如果您是使用 .profile(POSIX 相容描述檔),可以將下列指令加入 .zprofile 中,使 zsh 自動讀取其設定:

[[ -e ~/.profile ]] && emulate sh -c 'source ~/.profile'

您也可以將某些設定從 bash 描述檔移至 zsh 描述檔,而不修改。例如,若要設定環境變數:export MY_SETTING=1

zsh 會辨識不同於 bash 的提示規範符號集,並以更簡潔的語法來指定彩色輸出,而不需要使用複雜的 ANSI 跳脫序列。例如,以下是 .bash_profile 中預設 bash 提示的語法:

export PS1="\[\e[92;40m\]\h\[\e[m\]:\[\e[93m\]\W\[\e[m\] \\$ "

若要在使用 .zprofile.zshrc 時,將該 bash 提示轉換成 zsh 提示:

export PS1="%10F%m%f:%11F%1~%f \$ "

如需詳細資訊,請參閱 zsh 主頁面。


如何測試 shell 工序指令

若要在 macOS Catalina 中測試工序指令與 Bourne 相容 shell 的相容性,您可以將 /var/select/sh 變更為 /bin/bash、/bin/dash 或 /bin/zsh。如果您將 /var/select/sh 變更為 bash 以外的其他 shell,請留意採用 bashisms 的工序指令可能無法正常運作。

您可以執行 zsh --emulate sh 指令來使 zsh 模擬 sh。
  

對於非 Apple 製造之產品相關資訊,或是非 Apple 控制或測試之獨立網站,不得解釋 Apple 為其推薦或背書。Apple 對於協力廠商網站或產品的選擇、效能或使用,概不負責。Apple 對於協力廠商網站的準確性或可靠性不具有任何立場。使用 Internet 本具風險。如需更多資訊,請聯絡廠商。其他公司及產品名稱可能是其各自擁有者的商標。

發佈日期: