Mac 修改預設 shell

Tinypan發表於2024-06-15

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

Mac 修改預設 shell

輸入 shell 路徑,就可直接生效,當然需開啟新視窗檢視效果

相關文章