我在 WSL2 中安装了 Ubuntu-22.04。
我改变/etc/environment
了,这个答案建议,我需要注销并登录 Ubuntu 以使更改生效。但我无法这样做,因为无论我做什么,WSL 似乎都会保存其状态。
我试过:
wsl --shutdown
。Restart-Service LxssManager
。- 重新启动 Windows。
以上方法均无效。
我注意到在旧版本中 WSL Ubuntu 有时会在登录时列出一些附加信息(问候语、当前时间等)——我想,它在登录时会这样做,但我现在从未看到过这些信息,它只是以一个空的 shell 行开头,所以,我猜,它永远不会让我登录,只是以某种方式保持相同的会话。
那么,我该如何强制它重新登录?
答案1
昨晚,当我深入研究使用 Systemd 时路径设置在哪里时(当然,/etc/environment
默认情况下),我在想,如果今天能得到一个与该主题相关的问题,那将是多么讽刺。看看 - 就在这里!
您看到的问题不是 WSL 不会“关闭”(它会关闭),甚至不会“保存状态”(它不会)。问题只是/etc/environment
WSL 不会(通常)处理该问题。
这是因为/etc/environment
它是一个 PAM 构造——它通常pam_env.so
在登录。
但是,你可能已经注意到,WSL 中没有真正的“登录”概念。它从不要求你输入用户名或密码,因为真正的安全性来自你的视窗帐户和权限。
/etc/environment
您可以使用以下命令强制登录以调用 PAM(从而读取):
sudo su - $USER
您可能只想在以下任一位置设置变量:
~/.bashrc
-- 如果你只需要它们来做某事交互的会议~/.bash_profile
——如果您在“登录”shell 下的所有会话中都需要它们。- 或者如果您使用不同的 shell,则需要另一个配置文件。
/etc/environment
实际上是为应该设置的变量全部用户在多用户系统中。WSL 的设计确实考虑到了单一默认的开发人员用户。
Ubuntu 有时会在登录时列出一些附加信息(问候语、当前时间等)...,但我现在从未看到过这些信息
这是每日消息功能,通常每天只显示一次。等到明天,您可能会再次看到它。