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