`wsl env` は、`wsl` の後に `env` を続ける場合とは異なる結果を返します。

`wsl env` は、`wsl` の後に `env` を続ける場合とは異なる結果を返します。

WSL 内では (つまり、cmd を開いて を実行するwslか、wslスタート メニューから直接実行する)、 の末尾に次の行があります~/.bashrc

LANG=en_US.UTF-8

まだ WSL 内にいるときに、env次のように表示します。

LANG=en_US.UTF-8

すべて順調です。ただし、exitWSL からコマンドプロンプトに戻ると、wsl env次のメッセージが表示されます。

LANG=C.UTF-8

私は主に Windows ユーザーなので、この問題を解決するために何が起こっているのか十分に理解していません。に続いて を実行した場合とwsl env同じ結果をLANG変数に対して得るにはどうすればよいですか?wslenv

答え1

Clonkex、これは「bash」シェルの呼び出しに帰着します。「wsl」を実行すると、bash は対話モードで実行されます。ただし、「wsl」を実行すると、非対話モードで実行されます。

bash マニュアルページさまざまな形式の呼び出しで、さまざまな起動スクリプト (.bashrc、.bash_profile、.profile など) を実行する方法について説明します。

UNIX/Linux 環境では、通常、実行時に「-i」を指定して bash を対話モードで実行するように強制できます。しかし、wsl ではそれが許可されていないようです。

非対話型モードの場合でも環境変数を設定したい場合は、/etc/profile にこれを行うためのコマンドを追加するか、(推奨) /etc/profile.d/ に新しいファイルを作成してそこにコマンドを追加します。このファイルは、wsl を引数付きで実行するかどうかに関係なく実行されます。

関連情報