在尝试将 WSL2 Ubuntu 20.04 上的默认 shell 从 bash 更改为 fish 时,我彻底搞砸了,不小心使用了sudo chsh /bin/fish <user>
。我假设没有 /bin/fish 这样的东西,因为现在每次我尝试打开 Ubuntu 时,它都会立即关闭。现在我没有默认 shell,我怎么可能将我的 shell 改回 bash 或 fish(老实说,此时我会选择其中任何一个,我只想要一个 shell)?
答案1
好了,我终于明白了。对于那些不幸犯下和我一样错误的人,以下是你必须做的事情。
- 以管理员身份打开 PowerShell 提示符
- 使用命令将目录更改为 WSL 发行版
cd \\wsl$\<Distribution>
。对我来说,这是运行命令cd \\wsl$\Ubuntu-18.04
。 - 确保你尝试访问的发行版是默认的 WSL 发行版,如果不是,请暂时将其设置为默认
- 运行命令
wsl --user root
- 这将授予你在 PowerShell 提示符中对所有 WSL 文件的 root 访问权限 - 编辑
/etc/passwd
并将 shell 设置为可用的内容,我将我的设置为,但您可以在文件/bin/bash
中看到可用的内容/etc/shells
- 保存文件后,退出并重新打开 WSL。它应该会再次正常工作!
答案2
从 LiveCD 启动,挂载您的分区,编辑它/etc/passwd
并更改/bin/fish
为/bin/bash
(或者如果它确实已安装,则进行 fish,但我会将更改保持在最低限度)。重新启动。