Innerhalb von WSL (z. B. durch Öffnen einer Eingabeaufforderung und anschließendes Ausführen wsl
oder durch wsl
direktes 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 env
Folgendes angezeigt:
LANG=en_US.UTF-8
Alles ist gut. Wenn ich jedoch exit
von WSL zurück zur Eingabeaufforderung gehe, sehe wsl env
ich 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 env
dasselbe Ergebnis erzielen wie durch Ausführen von gefolgt von ?LANG
wsl
env
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.