所以我是 WSL 和 Ubuntu 22.04 的新手。
我看到有人在提示符下输入用户名和主机名(username@hostname...
)。所以我尝试做同样的事情,但最终删除了文件中的所有内容hosts
。我尝试:
sudo nano /etc/hosts
在里面我看到了类似的东西:
127.1.1.0 localhost
127.1.1.0 hostname.something # I changed this one
# and some additional lines
在我删除它并按Ctrl+X退出后,整个 hosts 文件夹就完全空了。
所以我说:“好吧,不要惊慌。也许只需重新启动一切?”
sudo reboot
...并且出现了这些错误:
system has not been booted with systemd as init system (pid 1). can't operate.
failed to connect to bus: host is down, fail to talk to init daemon
因此我决定尝试重新安装,但仍然遇到同样的问题。
我不知道如何重置它,以便 hosts 文件完全恢复正常。我怎样才能让 hosts 中的所有内容恢复到原来的状态,因为现在它只是一个空文件。
答案1
您似乎有两个不同的问题,也许还有另外两个隐含的问题:
- 如何恢复您的
/etc/hosts
文件。 - 如何在 WSL 上重启 Ubuntu。
- 如何更改主机名。
- 如何更改提示(如果我正确理解了你的问题)
在 WSL 上重启 Ubuntu
首先,需要注意的是,WSL 下的 Ubuntu 在许多方面与虚拟机或物理机上的 Ubuntu 的行为截然不同。其中一个方面是不使用 Systemd。这就是为什么您在尝试使用该reboot
命令(该命令映射到 Ubuntu 中的 Systemd 命令)时会收到该特定错误消息的原因。
另一个区别是它没有“电源”、“开/关”、“重启”等概念。它不是虚拟机,而是在 WSL2 虚拟机中运行的命名空间/容器(我们无法访问)。
一般来说,如果你退出 shell 并等待几秒钟,WSL 就会检测到 Ubuntu 中没有运行任何程序(如果是这种情况)并自动关闭它。你可以在 PowerShell 中使用以下命令进行检查:
wsl -l -v
如果显示为“跑步”,然后你可以手动停止它(也可以从 PowerShell 中):
wsl --terminate <distro>
... 是<distro>
出现在wsl -l -v
(可能“Ubuntu-22.04”为你)。
在某些情况下,您需要停止整个 WSL2 VM。可以通过以下方式完成:
wsl --shutdown
当然,这不仅会停止 WSL VM,还会停止其中所有正在运行的实例(以及 WSL1 实例)。
再生/etc/hosts
只需重新启动(从“已停止”状态重新启动 Ubuntu)。正如 @Steeldriver 在评论中提到的,该文件是在 WSL 启动时自动创建的。唯一的例外应该是如果您已通过/etc/wsl.conf
设置手动禁用该功能,这在您的情况下似乎不太可能。
更改主机名
我的建议——不要。WSL 会自动根据你的 Windows 计算机名称在 WSL 中创建主机名。如果你真的想更改它,请在 Windows 中更改计算机名称(然后重新启动 Windows)。
将其更改为其他内容(很可能)会导致将来其他内容无法正常工作。当您遇到问题时,您会忘记这可能是由主机名差异引起的。
更改 bash 提示符
改变迅速的本身,而不是主机名。您可以在提示中输入任何内容 - 它不必是计算出的username@hostname
对。
尝试类似(警告,我不是一位“酷提示”设计师):
LIGHTRED="\[\033[1;31m\]"
RED="\[\033[0;31m\]"
WHITE="\[\033[0;37m\]"
PS1="${RED}rivas@${WHITE}my${LIGHTRED}W${WHITE}S${LIGHTRED}L${RESET}> "
然后你可以把它放进你的~/.bashrc
(但不要删除它!