Mac 修改預設 shell
Mac 自 macOS Catalina 開始預設 shell 由原來的 Bash 改為 zsh
檢視 Mac OS 系統版本:
https://support.apple.com/zh-cn/109033
檢視系統自帶所有 shell
$ cat /etc/shells
# List of acceptable shells for chpass(1).
# Ftpd will not allow users to connect who are not using
# one of these shells.
/bin/bash
/bin/csh
/bin/dash
/bin/ksh
/bin/sh
/bin/tcsh
/bin/zsh
當前使用者預設 shell
$ echo $SHELL
=> /bin/zsh
當前終端視窗使用的 shell
$ echo $0
=> /bin/zsh
小測試:
前置條件:當前終端視窗使用 zsh
終端輸入:$ bash
作用:建立 bash 子程序,並進入
終端輸入 $ echo $SHELL
=> /bin/zsh
可以看到預設 shell 確實是 zsh
終端輸入:$ echo $0
=> bash
可以看到當前視窗已經切換成 bash
終端輸入:$ ps -j
=>
USER PID PPID PGID SESS JOBC STAT TT TIME COMMAND
panminxiang 1546 1545 1546 0 1 S s000 0:00.08 -zsh
panminxiang 1987 1546 1987 0 1 S s000 0:00.01 bash
根據 PPID 可知,bash 程序是 zsh 程序建立的子程序
終端輸入:$ exit 0
作用:退出 bash ,回到上級 zsh
注意點:子程序 bash 會繼承父程序 zsh 的一系列配置。比如 zsh 中配置了使用者級的環境變數(.zshrc檔案中),將 homebrew 加入了 PATH 中, bash 未配置任何使用者級環境變數(.bash_profile)檔案,那麼主程序 zsh 可以訪問到 brew 命令,子程序 bash 也可訪問到 brew命令。但是在 bash 主程序建立 zsh 子程序後,在 zsh 中卻不會讀取 zsh 的配置檔案,而是繼承 bash 的配置檔案,bash 未配置 Homebrew,所以 zsh 終端無法訪問 brew 命令
切換當前使用者預設 shell
方法一:命令設定
$ chsh -s /bin/zsh
=>
Changing shell for panminxiang.
Password for panminxiang:
輸入完密碼後,終端不報錯,即設定成功.
當前視窗不會切換成 bash,因為 zsh 程序還在執行這呢,終端開啟新視窗檢視效果,可以看到
方法二:UI 視窗設定
官網教程:
https://support.apple.com/zh-cn/guide/terminal/trml113/mac
輸入 shell 路徑,就可直接生效,當然需開啟新視窗檢視效果