`wsl env` ergibt ein anderes Ergebnis als `wsl` gefolgt von `env`

`wsl env` ergibt ein anderes Ergebnis als `wsl` gefolgt von `env`

Innerhalb von WSL (z. B. durch Öffnen einer Eingabeaufforderung und anschließendes Ausführen wsloder durch wsldirektes Ausführen aus dem Startmenü) habe ich am Ende von diese Zeile ~/.bashrc:

LANG=en_US.UTF-8

Wenn ich mich noch in WSL befinde, wird mir envFolgendes angezeigt:

LANG=en_US.UTF-8

Alles ist gut. Wenn ich jedoch exitvon WSL zurück zur Eingabeaufforderung gehe, sehe wsl envich Folgendes:

LANG=C.UTF-8

Ich bin hauptsächlich ein Windows-Benutzer und weiß nicht genug darüber, was vor sich geht, um das Problem zu lösen. Wie kann ich für die Variable wsl envdasselbe Ergebnis erzielen wie durch Ausführen von gefolgt von ?LANGwslenv

Antwort1

Clonkex, das läuft auf den Aufruf der Shell „bash“ hinaus. Wenn Sie einfach „wsl“ ausführen, führen Sie Bash im interaktiven Modus aus. Wenn Sie jedoch „wsl“ ausführen, führen Sie Bash im nicht interaktiven Modus aus.

DerBash-Manpagebeschreibt, wie unterschiedliche Aufrufformen unterschiedliche Startskripte (.bashrc, .bash_profile, .profile usw.) ausführen.

In einer UNIX/Linux-Umgebung können Sie Bash normalerweise dazu zwingen, im interaktiven Modus zu laufen, indem Sie bei der Ausführung "-i" angeben. Aber WSL scheint das nicht zuzulassen.

Wenn Sie eine Umgebungsvariable auch im nicht interaktiven Modus festlegen möchten, können Sie entsprechende Befehle in /etc/profile hinzufügen oder (vorzugsweise) eine neue Datei in /etc/profile.d/ erstellen und die Befehle dort hinzufügen. Diese Datei wird ausgeführt, unabhängig davon, ob Sie wsl mit Argumenten ausführen oder nicht.

verwandte Informationen