Внутри 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". Когда вы просто запускаете "wsl", вы запускаете bash в интерактивном режиме. Однако когда вы запускаете "wsl", вы запускаете в неинтерактивном режиме.
Theстраница руководства bashописывает, как различные формы вызова будут запускать различные сценарии запуска (.bashrc, .bash_profile, .profile и т. д.).
В среде UNIX/Linux вы обычно можете заставить bash работать в интерактивном режиме, указав "-i" при его запуске. Но wsl, похоже, не хочет этого допускать.
Если вы хотите задать переменную окружения даже в неинтерактивном режиме, можете добавить команды для этого в /etc/profile или (предпочтительнее) создать новый файл в /etc/profile.d/ и добавить команды туда. Этот файл будет запущен независимо от того, запускаете ли вы wsl с аргументами или нет.