If you're using a bash profile, such as to set environment variables, aliases, or path variables, you should switch to using a zsh equivalent. For example:

.zprofile is equivalent to .bash_profile and runs at login, including over SSH

is equivalent to and runs at login, including over SSH .zshrc is equivalent to .bashrc and runs for each new Terminal session

If you're using .profile (a POSIX-compliant profile), you can make zsh automatically read its settings by adding this command to .zprofile:

[[ -e ~/.profile ]] && emulate sh -c 'source ~/.profile'

You can also move some settings from a bash profile to a zsh profile without modification. For example, to set environment variables: export MY_SETTING=1 .

zsh recognizes a different set of prompt specifiers than bash and has a cleaner syntax for specifying colorized output, eliminating the need to use complex ANSI escape sequences. For example, here's the syntax for a default bash prompt from .bash_profile:

export PS1="\[\e[92;40m\]\h\[\e[m\]:\[\e[93m\]\W\[\e[m\] \\$ "

To convert that bash prompt to a zsh prompt when using .zprofile or .zshrc:

export PS1="%10F%m%f:%11F%1~%f \$ "

See the zsh man page for more details.