在 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」shell 呼叫。當您只執行“wsl”時,您會以互動模式執行 bash。但是,當您執行“wsl”時,您正在以非互動模式運行。
這bash 手冊頁描述不同形式的呼叫如何執行不同的啟動腳本(.bashrc、.bash_profile、.profile 等)。
在UNIX/Linux環境下,通常可以透過在執行bash時指定「-i」來強制bash以互動模式運作。但 wsl 似乎不想允許這樣做。
如果您想在非互動模式下設定環境變量,可以將命令新增至 /etc/profile 中,或(最好)在 /etc/profile.d/ 中建立新檔案並在其中新增命令。無論您是否使用參數執行 wsl,都會執行此檔案。