從 macOS Catalina 版開始眯搭,您的 Mac 將使用 zsh 作為默認登錄 Shell 和交互式 Shell仑嗅。您還可以在較低版本的 macOS 中將 zsh 設置為默認 Shell普泡。
默認情況下齿坷,您的 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荧嵌,您都可以從“用戶與群組”偏好設置或命令行中更改默認 Shell呛踊。
從“用戶與群組”偏好設置中更改
選取蘋果菜單 ? >“系統(tǒng)偏好設置”砾淌,然后點按“用戶與群組”啦撮。
-
點按鎖形圖標 image
,然后輸入您的帳戶名稱和密碼汪厨。
在左側的用戶列表中赃春,按住 Control 鍵點按您的用戶名,然后選取“高級選項”劫乱。
從“登錄 Shell”菜單中選取一個 Shell织中,然后點按“好”以存儲更改。
從命令行中更改
在“終端”中衷戈,輸入 $ chsh -s <var style="font-family: "SF Pro SC", "SF Pro Text", "SF Pro Icons", "PingFang SC", "Helvetica Neue", Helvetica, Arial, sans-serif; quotes: "“" "”"; font-style: normal; color: rgb(102, 102, 102);">path</var>
狭吼,其中的 <var style="font-family: "SF Pro SC", "SF Pro Text", "SF Pro Icons", "PingFang SC", "Helvetica Neue", Helvetica, Arial, sans-serif; quotes: "“" "”"; font-style: normal; color: rgb(102, 102, 102);">path</var> 是 /etc/shells 中列出的某個 Shell 路徑,例如 /bin/zsh殖妇、/bin/bash刁笙、/bin/csh、/bin/dash、/bin/ksh疲吸、/bin/sh 或 /bin/tcsh座每。
如何在不更改默認 Shell 的情況下使用其他 Shell
如果您不希望“終端”在新的“終端”窗口和標簽頁中使用默認的登錄 Shell,請按照以下步驟操作:
- 打開“終端”摘悴,然后選取“終端”>“偏好設置”峭梳。
- 從“通用”面板中,選擇“命令(完整的路徑)”蹂喻。
- 在提供的欄位中葱椭,輸入 /etc/shells 中列出的某個 Shell 路徑,例如 /bin/zsh口四、/bin/bash挫以、/bin/csh、/bin/dash窃祝、/bin/ksh掐松、/bin/sh 或 /bin/tcsh。
如果您調用 bash Shell粪小,而 macOS Catalina 已配置為使用另一個 Shell大磺,則您將看到一條信息,提示默認的交互式 Shell 現(xiàn)在是 zsh探膊。要消除這個警告杠愧,您可以將以下命令添加到 ~/.bash_profile 或 ~/.profile 中:
<pre style="margin: 1em 0px 0px; padding: 8px; font-size: 16px; font-weight: 400; font-style: normal; font-family: "SF Pro SC", "SF Pro Text", "SF Pro Icons", "PingFang SC", "Helvetica Neue", Helvetica, Arial, sans-serif; quotes: "“" "”"; border: 1px solid rgb(222, 222, 222); color: rgb(102, 102, 102); background-color: rgb(250, 251, 252); display: block; overflow: auto;">export BASH_SILENCE_DEPRECATION_WARNING=1
</pre>
如何切換到 zsh 描述文件和提示符
如果您正在使用 bash 描述文件(例如,為了設置環(huán)境變量逞壁、別名或路徑變量)流济,則您應改為使用作用與它相同的 zsh 描述文件。例如:
- .zprofile 的作用與 .bash_profile 相同腌闯,并且在登錄時運行(包括通過 SSH 運行)
- .zshrc 的作用與 .bashrc 相同绳瘟,并針對每個新的“終端”會話運行
如果您正在使用 .profile(一個兼容 POSIX 的描述文件),則您可以將以下命令添加到 .zprofile姿骏,以便 zsh 自動讀取這個描述文件的設置:
<pre style="margin: 1em 0px 0px; padding: 8px; font-size: 16px; font-weight: 400; font-style: normal; font-family: "SF Pro SC", "SF Pro Text", "SF Pro Icons", "PingFang SC", "Helvetica Neue", Helvetica, Arial, sans-serif; quotes: "“" "”"; border: 1px solid rgb(222, 222, 222); color: rgb(102, 102, 102); background-color: rgb(250, 251, 252); display: block; overflow: auto;">[[ -e ~/.profile ]] && emulate sh -c 'source ~/.profile'
</pre>
另外糖声,您無需進行任何修改,就可以將 bash 描述文件中的某些設置轉移到 zsh 描述文件分瘦。例如蘸泻,要設置環(huán)境變量,您可以使用以下命令:export MY_SETTING=1
嘲玫。
zsh 能夠識別一組不同于 bash 所能識別的提示符指定符悦施,并且用于指定彩色輸出的語法更簡潔,讓您無需使用復雜的 ANSI 轉義序列去团。例如抡诞,下面顯示了 .bash_profile 中默認 bash 提示符的語法:
<pre style="margin: 1em 0px 0px; padding: 8px; font-size: 16px; font-weight: 400; font-style: normal; font-family: "SF Pro SC", "SF Pro Text", "SF Pro Icons", "PingFang SC", "Helvetica Neue", Helvetica, Arial, sans-serif; quotes: "“" "”"; border: 1px solid rgb(222, 222, 222); color: rgb(102, 102, 102); background-color: rgb(250, 251, 252); display: block; overflow: auto;">export PS1="[\e[92;40m]\h[\e[m]:[\e[93m]\W[\e[m] \$ "
</pre>
要在使用 .zprofile 或 .zshrc 時將這個 prompt 提示符轉換為 zsh 提示符拜马,請使用以下命令:
<pre style="margin: 1em 0px 0px; padding: 8px; font-size: 16px; font-weight: 400; font-style: normal; font-family: "SF Pro SC", "SF Pro Text", "SF Pro Icons", "PingFang SC", "Helvetica Neue", Helvetica, Arial, sans-serif; quotes: "“" "”"; border: 1px solid rgb(222, 222, 222); color: rgb(102, 102, 102); background-color: rgb(250, 251, 252); display: block; overflow: auto;">export PS1="%10F%m%f:%11F%1~%f $ "
</pre>
請參閱 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出刷。
參考官方文檔