重新登录 WSL Ubuntu

重新登录 WSL Ubuntu

我在 WSL2 中安装了 Ubuntu-22.04。

我改变/etc/environment了,这个答案建议,我需要注销并登录 Ubuntu 以使更改生效。但我无法这样做,因为无论我做什么,WSL 似乎都会保存其状态。

我试过:

  1. wsl --shutdown
  2. Restart-Service LxssManager
  3. 重新启动 Windows。

以上方法均无效。

我注意到在旧版本中 WSL Ubuntu 有时会在登录时列出一些附加信息(问候语、当前时间等)——我想,它在登录时会这样做,但我现在从未看到过这些信息,它只是以一个空的 shell 行开头,所以,我猜,它永远不会让我登录,只是以某种方式保持相同的会话。

那么,我该如何强制它重新登录?

答案1

昨晚,当我深入研究使用 Systemd 时路径设置在哪里时(当然,/etc/environment默认情况下),我在想,如果今天能得到一个与该主题相关的问题,那将是多么讽刺。看看 - 就在这里!

您看到的问题不是 WSL 不会“关闭”(它会关闭),甚至不会“保存状态”(它不会)。问题只是/etc/environmentWSL 不会(通常)处理该问题。

这是因为/etc/environment它是一个 PAM 构造——它通常pam_env.so登录

但是,你可能已经注意到,WSL 中没有真正的“登录”概念。它从不要求你输入用户名或密码,因为真正的安全性来自你的视窗帐户和权限。

/etc/environment您可以使用以下命令强制登录以调用 PAM(从而读取):

sudo su - $USER

您可能只想在以下任一位置设置变量:

  • ~/.bashrc-- 如果你只需要它们来做某事交互的会议
  • ~/.bash_profile——如果您在“登录”shell 下的所有会话中都需要它们。
  • 或者如果您使用不同的 shell,则需要另一个配置文件。

/etc/environment实际上是为应该设置的变量全部用户在多用户系统中。WSL 的设计确实考虑到了单一默认的开发人员用户。

Ubuntu 有时会在登录时列出一些附加信息(问候语、当前时间等)...,但我现在从未看到过这些信息

这是每日消息功能,通常每天只显示一次。等到明天,您可能会再次看到它。

相关内容