Dentro do WSL (ou seja, abrindo um cmd e depois executando wsl
, ou apenas executando wsl
direto do menu iniciar) tenho esta linha no final de ~/.bashrc
:
LANG=en_US.UTF-8
Ainda dentro da WSL, se eu fizer env
isso, vejo o seguinte:
LANG=en_US.UTF-8
Tudo está bem. No entanto, se eu exit
do WSL de volta ao prompt do cmd e wsl env
vejo isso:
LANG=C.UTF-8
Eu sou principalmente uma pessoa do Windows e não sei o suficiente do que está acontecendo para resolver isso. Como posso wsl env
dar o mesmo resultado para a LANG
variável que fazendo wsl
seguido por env
?
Clonkex, isso se resume à invocação do shell "bash". Quando você apenas executa "wsl", você executa o bash em um modo interativo. No entanto, quando você executa "wsl", está executando em um modo não interativo.
A página man do bash descreve como diferentes formas de invocação executarão diferentes scripts de inicialização (.bashrc, .bash_profile, .profile, etc).
Em um ambiente UNIX/Linux, geralmente você pode forçar o bash a ser executado no modo interativo especificando "-i" ao executá-lo. Mas a wsl parece não querer permitir isso.
Se você deseja definir uma variável de ambiente mesmo quando em modo não interativo, pode adicionar comandos para fazer isso em /etc/profile ou (de preferência) criar um novo arquivo em /etc/profile.d/ e adicionar os comandos lá. Este arquivo será executado independentemente de você executar wsl com argumentos ou não.