`wsl env` 给出的结果与 `wsl` 后跟 `env` 给出的结果不同

`wsl env` 给出的结果与 `wsl` 后跟 `env` 给出的结果不同

在 WSL 内部(即通过打开 cmd 然后运行wsl,或者直接wsl从开始菜单运行)我在末尾有这一行~/.bashrc

LANG=en_US.UTF-8

当仍在 WSL 中时,我会env看到以下内容:

LANG=en_US.UTF-8

一切都很好。但是,如果我exit从 WSL 返回到 cmd 提示符,wsl env我是否会看到以下内容:

LANG=C.UTF-8

我主要使用 Windows,对如何解决这个问题了解不多。我怎样才能得到与执行后跟wsl env相同的结果?LANGwslenv

答案1

Clonkex,这归结为“bash”shell 调用。当您运行“wsl”时,您会在交互模式下运行 bash。但是,当您运行“wsl”时,您将在非交互模式下运行。

bash 手册页描述不同的调用形式将如何运行不同的启动脚本(.bashrc、.bash_profile、.profile 等)。

在 UNIX/Linux 环境下,通常可以通过在执行 bash 时指定“-i”来强制 bash 以交互模式运行。但 wsl 似乎不想允许这样做。

如果您希望在非交互模式下设置环境变量,可以将命令添加到 /etc/profile 中,或者(最好)在 /etc/profile.d/ 中创建一个新文件并在那里添加命令。无论您是否使用参数运行 wsl,此文件都会运行。

相关内容