![连接 SSH 后,我从 bash 运行 zsh - 如何仅用一个命令退出两者?](https://linux22.com/image/1297303/%E8%BF%9E%E6%8E%A5%20SSH%20%E5%90%8E%EF%BC%8C%E6%88%91%E4%BB%8E%20bash%20%E8%BF%90%E8%A1%8C%20zsh%20-%20%E5%A6%82%E4%BD%95%E4%BB%85%E7%94%A8%E4%B8%80%E4%B8%AA%E5%91%BD%E4%BB%A4%E9%80%80%E5%87%BA%E4%B8%A4%E8%80%85%EF%BC%9F.png)
我在我的服务器上运行 zsh 并且我想为该exit
命令添加别名,因为每当我尝试终止我的 SSH 会话时我都必须退出zsh
并退出bash
。
我尝试过alias exit='exit;exit'
,但没有成功。
我不想改变我的开始方式zsh
,但我认为这不是一个很好的解决方案。我已附加zsh
到/etc/profile
。
如何避免输入exit
两次来终止我的 SSH 会话?
答案1
bash
是该系统上您帐户的默认登录 shell。要更改它,请按照 @KevinPanko 的建议进行操作。然后bash
不会启动,只有zsh
。考虑到通过/etc/profile
,您总是zsh
在此刻启动(而不仅仅是有时),这可能是最好的方法。
或者,您可以使用exec
内置命令bash
来替换您的bash
进程。man bash
状态:
exec ... [command [arguments]]
如果指定了命令,它将替换 shell。不会创建新进程。参数将成为命令的参数。
因此你可以zsh
像这样运行:
exec zsh
之后,如果您退出zsh
,您将退出正在运行的唯一 shell,并立即退出。
答案2
该chsh
命令允许您更改帐户的登录 shell。
如果它尚未存在,您可能需要将其添加/bin/zsh
到您的文件中。/etc/shells
答案3
要解决此问题,只需将以下脚本添加到文件中.bashrc
:
if test -t 1; then
exec zsh
fi
注意:在 Ubuntu 10.04 和 Debian 10 上执行,但我相信它也适用于其他 Linux 破坏。