I run zsh from bash after connecting SSH – how can I exit both with only one command

bashsshzsh

I run zsh on my server and I want to alias the exit command, because whenever I try to terminate my SSH session I must exit from zsh and exit from bash.

I tried alias exit='exit;exit' to no avail.

I don't want to change how I start zsh but I think it's not a very good solution. I've appended zsh to /etc/profile.

How can avoid to type exit twice to terminate my SSH session?

Best Answer

bash is the default login shell of your account on that system. To change it, do what @KevinPanko suggests. Then bash won't start, only zsh. Given that, through /etc/profile, you're always starting zsh at the moment (and not just sometimes), that would probably the best way to do it.


Alternatively, you can use the exec built-in command of bash to replace your bash process. man bash states:

exec ... [command [arguments]]

If command is specified, it replaces the shell. No new process is created. The arguments become the arguments to command.

So you can run zsh like this:

exec zsh

Afterwards, if you exit zsh, you exit the only shell you're running, and quit immediately.

Related Question