将 shell 更改为 zsh 后,在登录提示符下陷入循环

Art*_*fex 2 login arch-linux

我将默认 shell 从 bash 更改为 zsh,重新启动后,我陷入了一个循环,在正确输入密码后,它使我返回到登录提示符 - 也无法登录 root。

因为我处于登录提示符下,所以无法编辑任何内容,因此需要一个实时 USB,但不确定还能做什么/如何解决问题

编辑:根据要求,我登录到默认情况下存在的 tty1,我像往常一样输入我的用户名和密码,但是当我这样做时,它显示一些文本太快而无法阅读,然后再次返回到我的用户名的相同提示。通常它会带我进入终端,然后我将使用 startxfce4 命令启动 xfce

为了更改 shell,我执行了 chsh /bin/zsh

我可能也以 sudo 的方式运行它,但是我昨天这样做了,并且不再记得我是否这样做了。

Gil*_*il' 5

在正常配置的系统上,如果您使用 更改了 shell chsh,则所选的 shell 有效,因此您的 shell 正在启动,但其配置文件之一存在问题,导致其立即退出。

尝试在记录后快速按Ctrl+ 。C根据机器的负载情况,这不会杀死 shell 但会指示其停止解析配置文件的时间窗口可能会持续足够长的时间,也可能不会持续足够长的时间来获得实际的成功机会。尝试几次,最好是在一些繁忙的磁盘活动期间,以便所涉及的文件不在磁盘缓存中。

如果问题出在.zshrc,您仍然可以非交互方式登录。这在控制台上是不可能的,但可以通过网络完成:

ssh machinename 'mv .zshrc bad.zshrc'
Run Code Online (Sandbox Code Playgroud)

如果您有 FTP(不是 SFTP)访问权限,则可以通过这种方式删除任何配置文件,因为 FTP 不会读取任何配置文件。.zprofile使用 SSH 或 SFTP 时,始终会调用 shell,因此如果问题出在或 上,您将无法登录.zshenv

如果您无法访问您的帐户,则需要通过根帐户来解决此问题。如果您有 root 密码,只需在控制台上以 root 身份登录即可。如果您只能通过 sudo 访问 root 帐户,则您已将自己锁定在外,因此假设没有其他人可以为您执行此操作,您将需要对计算机进行物理访问,并且需要重新启动它。在引导加载程序提示符下(您可能需要按住Shift才能显示),init=/bin/sh在内核命令行的末尾添加(以 开头的行linux)。请参阅Arch Wiki了解更多详细信息。

一旦您从 root 帐户获得访问权限,您可以将 shell 更改回有效的 shell,或者猜测导致问题的文件。Zsh 读取您的主目录中的 5 个配置文件/etc和 5 个配置文件。

恢复帐户访问权限后,如果您不知道导致问题的文件,请添加set -x~/.zshenv. 这将导致 zsh 在执行之前打印所有命令。运行zsh -l以运行登录 shell,或在另一个终端上登录,然后查看发生了什么问题。

在将 shell 更改回 zsh 之前,请测试是否zsh -l有效。运行后chsh,在退出前检查是否可以在其他终端登录。