Ubuntu 16.04下oh-my-zsh执行exit进入bash而非关闭窗口的问题求助
解决oh-my-zsh执行exit后进入bash而非关闭窗口的问题
我之前也碰到过一模一样的情况,大概率是终端启动配置或者zsh的退出行为设置出了问题,咱们一步步来排查修复:
1. 先检查终端的启动命令设置
首先得确认你的终端(不管是GNOME Terminal、Terminator还是其他)是不是用了嵌套启动的方式,比如把启动命令设成bash -c zsh。要是这么设置的话,exit退出zsh后自然会回到父进程bash,而不是直接关闭窗口。
- 打开终端的偏好设置(Preferences)
- 找到「Command」或者「启动命令」选项
- 确保设置的是直接启动
zsh,而不是通过bash间接启动 - 也可以试试切换「login shell」的勾选状态,对比下效果
2. 排查zsh的退出相关配置
看看你的~/.zshrc或者oh-my-zsh的自定义配置里有没有影响退出行为的内容:
- 执行命令快速检索:
grep -E "exit|precmd|preexec" ~/.zshrc ~/.oh-my-zsh/custom/*.zsh - 如果有自定义的退出脚本,比如强制返回非0值,有些终端会判断为异常退出而保留窗口;要是有钩子脚本在退出时额外启动了进程,也会导致这种情况
- 可以临时把
~/.zshrc重命名为~/.zshrc.bak,重启终端测试exit行为,如果正常了,说明是你的自定义zsh配置出了问题,再逐步恢复排查
3. 确认默认shell设置
检查你的默认shell是不是zsh:
- 执行
echo $SHELL,正常应该输出/usr/bin/zsh - 如果不是,执行
chsh -s /usr/bin/zsh,输入密码后重启终端生效。这样终端启动时直接以zsh作为登录shell,exit后就会直接关闭窗口
4. 测试纯净zsh环境
暂时禁用oh-my-zsh,直接启动原生zsh试试:
- 执行
zsh --no-rcs进入纯净zsh环境 - 输入
exit,看是否会关闭窗口。如果正常,说明是oh-my-zsh的某个插件或主题导致的问题 - 可以逐个注释掉
~/.zshrc里plugins数组的插件,重启终端测试,找到搞事情的那个插件就行
我之前就是因为装了个自定义的autoenv插件,它在退出时会触发额外的shell进程,导致exit后回到bash,禁用后就正常了。
你提供的执行示例:
➜ ~ exit myname@ThinkPad-530:~$这个输出正好说明退出zsh后回到了bash的交互提示符,核心就是找到为什么zsh不是终端的直接父进程,或者默认shell没设置对。
内容的提问来源于stack exchange,提问作者Amanda
相关产品推荐
相关产品推荐

