在 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 及其全面的命令行完成系統(tǒng)崎脉,請在“終端”中輸入 man zsh拧咳。

image

如何更改默認 Shell

無論您的用戶帳戶是配置為使用 zsh(推薦)、bash 還是其他 Shell荧嵌,您都可以從“用戶與群組”偏好設置或命令行中更改默認 Shell呛踊。

從“用戶與群組”偏好設置中更改

  1. 選取蘋果菜單 ? >“系統(tǒng)偏好設置”砾淌,然后點按“用戶與群組”啦撮。

  2. 點按鎖形圖標
    image

    ,然后輸入您的帳戶名稱和密碼汪厨。

  3. 在左側的用戶列表中赃春,按住 Control 鍵點按您的用戶名,然后選取“高級選項”劫乱。

  4. 從“登錄 Shell”菜單中選取一個 Shell织中,然后點按“好”以存儲更改。

image

從命令行中更改

在“終端”中衷戈,輸入 $ chsh -s <var style="font-family: &quot;SF Pro SC&quot;, &quot;SF Pro Text&quot;, &quot;SF Pro Icons&quot;, &quot;PingFang SC&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; quotes: &quot;“&quot; &quot;”&quot;; 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座每。

image

如何在不更改默認 Shell 的情況下使用其他 Shell

如果您不希望“終端”在新的“終端”窗口和標簽頁中使用默認的登錄 Shell,請按照以下步驟操作:

  1. 打開“終端”摘悴,然后選取“終端”>“偏好設置”峭梳。
  2. 從“通用”面板中,選擇“命令(完整的路徑)”蹂喻。
  3. 在提供的欄位中葱椭,輸入 /etc/shells 中列出的某個 Shell 路徑,例如 /bin/zsh口四、/bin/bash挫以、/bin/csh、/bin/dash窃祝、/bin/ksh掐松、/bin/sh 或 /bin/tcsh。
image

如果您調用 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>

image

如何切換到 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 頁面,以了解更多詳細信息沐绒。

image

如何測試 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出刷。

參考官方文檔

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市坯辩,隨后出現(xiàn)的幾起案子馁龟,更是在濱河造成了極大的恐慌,老刑警劉巖漆魔,帶你破解...
    沈念sama閱讀 221,198評論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件坷檩,死亡現(xiàn)場離奇詭異,居然都是意外死亡改抡,警方通過查閱死者的電腦和手機矢炼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評論 3 398
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來阿纤,“玉大人句灌,你說我怎么就攤上這事∏肥埃” “怎么了胰锌?”我有些...
    開封第一講書人閱讀 167,643評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長藐窄。 經常有香客問我资昧,道長,這世上最難降的妖魔是什么枷邪? 我笑而不...
    開封第一講書人閱讀 59,495評論 1 296
  • 正文 為了忘掉前任榛搔,我火速辦了婚禮诺凡,結果婚禮上东揣,老公的妹妹穿的比我還像新娘。我一直安慰自己腹泌,他們只是感情好嘶卧,可當我...
    茶點故事閱讀 68,502評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著凉袱,像睡著了一般芥吟。 火紅的嫁衣襯著肌膚如雪侦铜。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,156評論 1 308
  • 那天钟鸵,我揣著相機與錄音钉稍,去河邊找鬼。 笑死棺耍,一個胖子當著我的面吹牛贡未,可吹牛的內容都是我干的。 我是一名探鬼主播蒙袍,決...
    沈念sama閱讀 40,743評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼俊卤,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了害幅?” 一聲冷哼從身側響起消恍,我...
    開封第一講書人閱讀 39,659評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎以现,沒想到半個月后狠怨,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 46,200評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡邑遏,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,282評論 3 340
  • 正文 我和宋清朗相戀三年取董,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片无宿。...
    茶點故事閱讀 40,424評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡茵汰,死狀恐怖,靈堂內的尸體忽然破棺而出孽鸡,到底是詐尸還是另有隱情蹂午,我是刑警寧澤,帶...
    沈念sama閱讀 36,107評論 5 349
  • 正文 年R本政府宣布彬碱,位于F島的核電站豆胸,受9級特大地震影響,放射性物質發(fā)生泄漏巷疼。R本人自食惡果不足惜晚胡,卻給世界環(huán)境...
    茶點故事閱讀 41,789評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望嚼沿。 院中可真熱鬧估盘,春花似錦、人聲如沸骡尽。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽攀细。三九已至箫踩,卻和暖如春爱态,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背境钟。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評論 1 271
  • 我被黑心中介騙來泰國打工锦担, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人慨削。 一個月前我還...
    沈念sama閱讀 48,798評論 3 376
  • 正文 我出身青樓吆豹,卻偏偏與公主長得像,于是被迫代替她去往敵國和親理盆。 傳聞我的和親對象是個殘疾皇子痘煤,可洞房花燭夜當晚...
    茶點故事閱讀 45,435評論 2 359

推薦閱讀更多精彩內容