使用 zsh 作為 Mac 的預設 shell

若以 macOS Catalina 啟動,Mac 會以 zsh 作為預設登入 shell 及互動 shell。你也可以在舊版 macOS 中將 zsh 設為預設 shell。

根據預設,Mac 的登入 shell 及互動 shell 會以 zsh 或 bash 作為指令列解譯器:

  • 若以 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. 選擇 Apple 選單  >「系統設定」,然後按一下側邊欄中的「用戶與群組」。

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

  3. 系統出現提示時,請輸入你的用戶名稱和密碼。

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

在較舊版本的 macOS 中:

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

  2. 按一下鎖定未有提供替代影像,然後輸入你的用戶名稱和密碼。

  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 的 shell。例如:

  • .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 man 頁面。

如何測試 shell 程式碼

如要在 macOS Catalina 或之後版本中測試程式碼與 Bourne 相容 shell 的相容性,你可以將 /var/select/sh 改為 /bin/bash、/bin/dash 或 /bin/zsh。請注意,如將 /var/select/sh 改為 bash 以外的 shell,使用 bash 規則的程式碼未必可以正常運作。

你可以執行 zsh --emulate sh 指令,讓 zsh 模擬 sh 的功能。

對於非 Apple 製造產品,或者並非由 Apple 控制或測試的獨立網站,其相關資訊的提供不應詮釋為受到 Apple 所推薦或認可。Apple 對於第三方網站或產品的選擇、表現或使用,概不承擔任何責任。Apple 對於第三方網站的準確性或可靠性不作任何聲明。如需進一步資料,請聯絡相關供應商

發佈日期: