`wsl env` 所給的結果與後面跟著 `env` 的 `wsl` 不同

`wsl env` 所給的結果與後面跟著 `env` 的 `wsl` 不同

在 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相同的結果?LANGwslenv

答案1

Clonkex,這歸結為「bash」shell 呼叫。當您只執行“wsl”時,您會以互動模式執行 bash。但是,當您執行“wsl”時,您正在以非互動模式運行。

bash 手冊頁描述不同形式的呼叫如何執行不同的啟動腳本(.bashrc、.bash_profile、.profile 等)。

在UNIX/Linux環境下,通常可以透過在執行bash時指定「-i」來強制bash以互動模式運作。但 wsl 似乎不想允許這樣做。

如果您想在非互動模式下設定環境變量,可以將命令新增至 /etc/profile 中,或(最好)在 /etc/profile.d/ 中建立新檔案並在其中新增命令。無論您是否使用參數執行 wsl,都會執行此檔案。

相關內容