默認情況下,您的 Mac 使用 zsh 或 bash 作為登錄 Shell 和交互式 Shell 的命令行解釋器:
- 從 macOS Catalina 版開始,zsh (Z shell) 是所有新建用戶帳戶的默認 Shell。
- bash 是 macOS Mojave 及更低版本中的默認 Shell。
zsh 與 Bourne Shell (sh) 高度兼容,并且與 bash 基本兼容,但存在一些差別。要進一步了解 zsh 及其全面的命令行完成系統(tǒng),請在“終端”中輸入 man zsh
。
如何更改默認 Shell
無論您的用戶帳戶是配置為使用 zsh(推薦)、bash 還是其他 Shell,您都可以從“用戶與群組”偏好設(shè)置或命令行中更改默認 Shell。
從“用戶與群組”偏好設(shè)置中更改
- 選取蘋果菜單 ? >“系統(tǒng)偏好設(shè)置”,然后點按“用戶與群組”。
- 點按鎖形圖標
,然后輸入您的帳戶名稱和密碼。
- 在左側(cè)的用戶列表中,按住 Control 鍵點按您的用戶名,然后選取“高級選項”。
- 從“登錄 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,請按照以下步驟操作:
- 打開“終端”,然后選取“終端”>“偏好設(shè)置”。
- 從“通用”面板中,選擇“命令(完整的路徑)”。
- 在提供的欄位中,輸入 /etc/shells 中列出的某個 Shell 路徑,例如 /bin/zsh、/bin/bash、/bin/csh、/bin/dash、/bin/ksh、/bin/sh 或 /bin/tcsh。
如果您調(diào)用 bash Shell,而 macOS Catalina 已配置為使用另一個 Shell,則您將看到一條信息,提示默認的交互式 Shell 現(xiàn)在是 zsh。要消除這個警告,您可以將以下命令添加到 ~/.bash_profile 或 ~/.profile 中:
如何切換到 zsh 描述文件和提示符
如果您正在使用 bash 描述文件(例如,為了設(shè)置環(huán)境變量、別名或路徑變量),則您應改為使用作用與它相同的 zsh 描述文件。例如:
- .zprofile 的作用與 .bash_profile 相同,并且在登錄時運行(包括通過 SSH 運行)
- .zshrc 的作用與 .bashrc 相同,并針對每個新的“終端”會話運行
如果您正在使用 .profile(一個兼容 POSIX 的描述文件),則您可以將以下命令添加到 .zprofile,以便 zsh 自動讀取這個描述文件的設(shè)置:
[[ -e ~/.profile ]] && emulate sh -c 'source ~/.profile'
另外,您無需進行任何修改,就可以將 bash 描述文件中的某些設(shè)置轉(zhuǎn)移到 zsh 描述文件。例如,要設(shè)置環(huán)境變量,您可以使用以下命令:export MY_SETTING=1
。
zsh 能夠識別一組不同于 bash 所能識別的提示符指定符,并且用于指定彩色輸出的語法更簡潔,讓您無需使用復雜的 ANSI 轉(zhuǎn)義序列。例如,下面顯示了 .bash_profile 中默認 bash 提示符的語法:
要在使用 .zprofile 或 .zshrc 時將這個 prompt 提示符轉(zhuǎn)換為 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,請注意,使用 bashisms 的腳本可能無法正常工作。
您可以運行命令 zsh --emulate sh
來讓 zsh 模擬 sh。