I know that in linux(usually) such initialization file will be .bashrc (bash is the default shell), for OSX it will be .bash_profile. But there are also different shells, like zsh.
So I wonder, if I will have bash as the default shell, with it's configuration in .bashrc, and then I'll decide to run exec zsh
- what file would I need to edit to specify the initialization steps for zsh specifically? Are there separate files for different kinds of shells that are running while initialization a new terminal?
I tried to add some aliases before to my .bashrc to achieve the same result:
alias switch_to_zsh="exec zsh; source zsh_config.sh"
But after switching to zsh it forgets about source zsh_config.sh
part.
2 Answers 2
from zsh manual:
Commands are then read from $ZDOTDIR/.zshenv. If the shell is a login
shell, commands are read from /etc/zsh/zprofile and then $ZDOT‐
DIR/.zprofile. Then, if the shell is interactive, commands are read
from /etc/zsh/zshrc and then $ZDOTDIR/.zshrc. Finally, if the shell is
a login shell, /etc/zsh/zlogin and $ZDOTDIR/.zlogin are read.
This page lists the startup files for the most common *nix shells. For zsh the equivalent to .bashrc
is .zshrc
.
exec
will be run (ifexec
succeeds) asexec
will replace the existing process with something that has no idea about whatever other commands were in queue with the previous process.