在 Mac 上使用 zsh 作為預設 shell

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

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

  • 從 macOS Catalina 開始,zsh(Z shell)是所有新建使用者帳號的預設 shell。

  • bashmacOS Mojave 和之前版本中的預設 shell。

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

如何變更預設 shell

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

從命令列

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

從「使用者與群組」設定

macOS Ventura 或以上版本:

  1. 選擇「蘋果」選單  >「系統設定」,然後按一下側邊欄中的「使用者與群組」。

  2. 在右側的使用者列表中,按住 Control 鍵並按一下使用者名稱或使用者圖片,然後選擇「進階選項」。

  3. 出現提示時,輸入使用者名稱和密碼。

  4. 從「登入 Shell」選單中選擇一個 shell,然後按一下「好」以儲存變更。

舊版 macOS:

  1. 選擇「蘋果」選單  >「系統偏好設定」,然後按一下「使用者與群組」。

  2. 按一下鎖頭圖像No alt supplied for Image,然後輸入你的使用者名稱和密碼。

  3. 在左側的使用者列表中,按住 Control 鍵並按一下使用者名稱,然後選擇「進階選項」。

  4. 從「登入 Shell」選單中選擇一個 shell,然後按一下「好」以儲存變更。

如何使用不同的 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 是配置為使用不同的 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 對於第三方網站的準確性或可靠性不做任何保證。如需其他資訊,請聯絡廠商

發佈日期: