Restart terminal without closing on MacOS Restart terminal without closing on MacOS bash bash

Restart terminal without closing on MacOS


Just type in the command:

exec bash -l

I guess that should do it.

For zsh,

exec zsh -l

This is needed because every shell on macOS by default is a login shell.

Justing writing exec bash would replace the current shell with a non-login shell which is not the same effect as closing and re-opening the terminal.

exec would make new bash -l process replace the current shell. If exec is not used, bash -l would spawn a new shell over the current shell incrementing the $SHLVL.


For me none of the other solutions work for ZSH.

Simply source ~/.zshrc did the job actually.

Note: running exec zsh -l outputs /Users/my_username/.zprofile:3: command not found: yarn (where my_username is my username). But running only the command mentioned above does the job.


The actual answer, assuming you interpret the question as having the same effect at the state of the terminal session as closing and reopening Terminal would, appears to be to run the executable of the used shell to start a new session:

https://unix.stackexchange.com/a/217907/137983

zsh

If you're not on Catalina where ZSH is the default shell, it's going to be:

bash

After this, all state of the previous session (like session environment variables) will be reset. Also ZSH profile should be re-sourced I think.