在 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
相同的结果?LANG
wsl
env
答案1
Clonkex,这归结为“bash”shell 调用。当您运行“wsl”时,您会在交互模式下运行 bash。但是,当您运行“wsl”时,您将在非交互模式下运行。
这bash 手册页描述不同的调用形式将如何运行不同的启动脚本(.bashrc、.bash_profile、.profile 等)。
在 UNIX/Linux 环境下,通常可以通过在执行 bash 时指定“-i”来强制 bash 以交互模式运行。但 wsl 似乎不想允许这样做。
如果您希望在非交互模式下设置环境变量,可以将命令添加到 /etc/profile 中,或者(最好)在 /etc/profile.d/ 中创建一个新文件并在那里添加命令。无论您是否使用参数运行 wsl,此文件都会运行。