我将 Ubuntu 中的默认 shell 从 bash 更改为 zsh。我使用了中解释的步骤http://github.com/sorin-ionescu/prezto然后运行chsh -s zsh
。此后,我无法登录任何 shell,因为只要我尝试登录,它就会弹出。我尝试从 gnome 终端、xterm 登录,并尝试从 tty1 (++) 登录。Alt只要我尝试打开,它就会关闭。CtrlF1
答案1
要返回系统,您可以通过在 GRUB 中的 linux 内核行末尾附加数字 1 来引导进入单用户模式。标题为的 U&L Q&A 中粗略地概述了执行此操作的方法:我可以在不启动 root 登录 shell 的情况下以 root 身份启动进程吗?。
完成此操作后,您将以 root 身份进入提示符,您可以在其中撤消对 shell 所做的更改。这将使您的系统恢复正常工作。
从这里开始,您可能希望chsh
使用您的用户名来运行,而不是之前使用的任何方法。
答案2
登录为root
.验证是否zsh
已安装。如果不apt-get install zsh
答案3
您可能无法打开终端或以文本模式登录的原因有两个:您的 shell(如用户数据库中记录的)不存在,或者您的 shell 的配置文件出现致命错误。
如果chsh
成功,那么您的 shell 确实存在(chsh
检查 shell 是否在允许的列表中,并且 Ubuntu 的包管理根据已安装的包更新列表)。因此,除非您zsh
在执行此操作后删除了该软件包chsh -s zsh
(在这种情况下您应该重新安装它),否则我们可以排除这种情况。
因此,您从 Prezto 获得的配置文件之一肯定有错误、安装不正确或缺少某些关键依赖项。将这些配置文件移开。启动文件管理器(例如 Nautilus )并重命名主目录中的以下文件(如果存在):.zlogin
、.zlogout
、.zprofile
和.如果它们是符号链接,只需删除符号链接,稍后您将重新创建它们。.zshenv
.zshrc
完成此操作后,您将能够打开终端并开始使用 zsh 的默认配置。第一次运行 zsh 时,它的新用户设置界面将运行(如果您按照中的说明进行操作,您一定已经看到它了)https://github.com/sorin-ionescu/prezto)。
暂时将您的 shell 改回 bash ( chsh -s bash
),直到您使用 Prezto 解决问题。打开终端(现在运行 bash),然后运行zsh
.将.z*
文件移回原位,或者按照步骤 3 重新创建符号链接。现在zsh
在这个打开的终端中运行并查看错误是什么。如果错误不提供信息,请运行zsh -x
以获取调试跟踪。
解决问题并且 zsh 启动后,chsh -s zsh
再次运行。