`wsl env` da un resultado diferente a `wsl` seguido de `env`

`wsl env` da un resultado diferente a `wsl` seguido de `env`

Dentro de WSL (es decir, abriendo un cmd y luego ejecutando wsl, o simplemente ejecutando wsldirectamente desde el menú de inicio) tengo esta línea al final de ~/.bashrc:

LANG=en_US.UTF-8

Mientras todavía estoy dentro de WSL, si lo hago, envveo lo siguiente:

LANG=en_US.UTF-8

Todo es bueno. Sin embargo, si exitvuelvo de WSL al indicador cmd, veo wsl envesto:

LANG=C.UTF-8

Soy principalmente una persona de Windows y no sé lo suficiente sobre lo que está pasando para resolver este problema. ¿Cómo puedo wsl envdar el mismo resultado para la LANGvariable que hacer wslseguido de env?

Respuesta1

Clonkex, esto se reduce a la invocación del shell "bash". Cuando simplemente ejecuta "wsl", ejecuta bash en modo interactivo. Sin embargo, cuando ejecuta "wsl", lo hace en modo no interactivo.

Elpágina de manual de bashdescribe cómo las diferentes formas de invocación ejecutarán diferentes scripts de inicio (.bashrc, .bash_profile, .profile, etc.).

En un entorno UNIX/Linux, generalmente puede forzar que bash se ejecute en modo interactivo especificando "-i" al ejecutarlo. Pero wsl no parece querer permitir eso.

Si desea configurar una variable de entorno incluso cuando está en modo no interactivo, puede agregar comandos para hacerlo en /etc/profile, o (preferiblemente) crear un nuevo archivo en /etc/profile.d/ y agregar los comandos allí. Este archivo se ejecutará independientemente de si ejecuta wsl con argumentos o no.

información relacionada