MacOS – Big Sur switched to zsh terminal but still uses .bash_profile

bashbig surmacosterminalzsh

I've upgraded to Big Sur and noticed my user was still using bash shell, so I changed Users → Advanced Options → Login shell to /bin/zsh and restarted.

The shell that starts appears to be zsh insofar this happens:

$ echo $SHELL
/bin/zsh

But the terminal never sources ~/.zshrc, it actually is still sourcing ~/.bash_profile and I don't understand why. New sessions also still gives this warning:

The default interactive shell is now zsh.
To update your account to use zsh, please run `chsh -s /bin/zsh`.
For more details, please visit https://support.apple.com/kb/HT208050.

I've already run chsh but it doesn't have anything to change, and it definitely points to /bin/zsh. If I create a new user it uses zsh and ~/.zshrc as expected.

I'm starting to suspect that my default shell is in fact not zsh, but is actually still using bash.. Can anyone tell me what's wrong that causes my terminal to not behave like a new user's, or how I can further debug this issue?

EDIT: Yeah it's stuck on bash:

$ ps
  PID TTY           TIME CMD
  892 ttys000    0:00.02 -bash
  869 ttys001    0:00.01 -bash
 1011 ttys002    0:00.01 -bash

How can that be? My user settings definitely point to zsh:
user advanced options with highlighted login shell pointing to /bin/zsh

Best Answer

Are you using macOS's Terminal.app? It might be overriding this in its Preferences:

enter image description here