`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тот же результат для 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 с аргументами или нет.

Связанный контент