老问题:“删除zsh,但忘记将shell改为bash,现在Ubuntu崩溃(wsl)”注意到@steeldriver的答案也适用于我的新问题。
我一直试图在我的Ubuntu终端20.04 (wsl)上安装zsh。我将shell (使用chsh)更改为zsh,但随后删除了zsh。然后我忘了把外壳换回bash。现在Ubuntu在启动后立即崩溃。如果没有卸载+重新安装,我如何避免这种崩溃?
发布于 2021-02-11 02:13:39
如果您可以以根用户身份登录到WSL机器,即
wsl -u root或者(如果您有多个WSL发行版)
wsl -d <distrib> -u root其中<distrib>可以通过在命令提示符中运行wsl -l获得;然后您可以从那里为用户帐户执行chsh,即
chsh -s /bin/bash <username>将<username>替换为用户的实际登录名。
发布于 2022-09-08 03:06:19
wsl -u root,正如@steeldriver的回答所建议的那样,对于作为根访问WSL实例和修复问题来说当然是完全有效的。
我还将为未来的读者提供一些非根选项:
在这个特定的问题中,用户的shell被设置为Zsh (已卸载):
wsl -e bash-e/--exec参数启动指定的可执行文件,而不是在/etc/passwd中定义的shell。当然,可以从WSL内部发出一个chsh。
或者我们可以完全通过以下方式实现:
wsl -e chsh -s /usr/bin/bash..。直接更改外壳。
最后,对于对其中一个启动文件进行了错误编辑但无法启动的用户:
wsl ~ -e bash --noprofile --norc这将在不处理启动文件的情况下启动Bash (在默认用户目录中),这样您就可以找到问题并修复它。
发布于 2021-02-11 01:57:10
通过安装usb/dvd启动,并在机器上挂载硬盘驱动器并在其上编辑文件/etc/阴影。您需要将sde3更改为驱动器上的根,这很可能是安装了efi的单个驱动器系统中的sda2。我给你看备份驱动器上的程序。
root@zeus-H370M:~# mount /dev/sde3 /mnt
root@zeus-H370M:~# cat /mnt/etc/passwd | grep zeus
zeus:x:1000:1000:Zeus,,,:/home/zeus:/bin/bash在这里,我向您展示了我的文件,它的最后一部分设置了登录shell,将它从/bin/zsh更改为bash,就像我在我的文件中所做的那样。您需要在命令前面使用sudo,而不是cat作为第二个命令,将其替换为nano。完成后保存文件,然后在终端中使用sudo重新引导重新启动系统。
实际安装的过程是将安装驱动器从机器上启动,就好像要进行另一次安装一样。既然Ubuntu允许您尝试,就可以这样做。在桌面上,您进入活动并键入终端,在程序打开时启动该程序,使用我显示的命令来挂载/分区并编辑nano所需的文件。如果安装为单个分区EFI安装,则安装到单驱动器SATA驱动器机器上的驱动器是/dev/sda分区/dev/sda 1,如果安装为单个分区EFI安装,则仅为MBR单个分区安装的/dev/sda 1。在EFI上,你需要挂载2来编辑MBR上的文件,1分区被挂载。编辑该文件,将其更改为bash,当您重新启动您的计算机时,它将再次完整,您可以登录。如果可以在Windows中找到安装驱动器的过程,则可以挂载驱动器并进行编辑。
https://askubuntu.com/questions/1315428
复制相似问题