Ubuntu 20.04 WSL2:意外将 root 用户更改为不存在的 shell

Ubuntu 20.04 WSL2:意外将 root 用户更改为不存在的 shell

在尝试将 WSL2 Ubuntu 20.04 上的默认 shell 从 bash 更改为 fish 时,我彻底搞砸了,不小心使用了sudo chsh /bin/fish <user>。我假设没有 /bin/fish 这样的东西,因为现在每次我尝试打开 Ubuntu 时,它都会立即关闭。现在我没有默认 shell,我怎么可能将我的 shell 改回 bash 或 fish(老实说,此时我会选择其中任何一个,我只想要一个 shell)?

答案1

好了,我终于明白了。对于那些不幸犯下和我一样错误的人,以下是你必须做的事情。

  1. 以管理员身份打开 PowerShell 提示符
  2. 使用命令将目录更改为 WSL 发行版cd \\wsl$\<Distribution>。对我来说,这是运行命令cd \\wsl$\Ubuntu-18.04
  3. 确保你尝试访问的发行版是默认的 WSL 发行版,如果不是,请暂时将其设置为默认
  4. 运行命令wsl --user root- 这将授予你在 PowerShell 提示符中对所有 WSL 文件的 root 访问权限
  5. 编辑/etc/passwd并将 shell 设置为可用的内容,我将我的设置为,但您可以在文件/bin/bash中看到可用的内容/etc/shells
  6. 保存文件后,退出并重新打开 WSL。它应该会再次正常工作!

答案2

从 LiveCD 启动,挂载您的分区,编辑它/etc/passwd并更改/bin/fish/bin/bash(或者如果它确实已安装,则进行 fish,但我会将更改保持在最低限度)。重新启动。

相关内容