WSL 内では (つまり、cmd を開いて を実行するwsl
か、wsl
スタート メニューから直接実行する)、 の末尾に次の行があります~/.bashrc
。
LANG=en_US.UTF-8
まだ WSL 内にいるときに、env
次のように表示します。
LANG=en_US.UTF-8
すべて順調です。ただし、exit
WSL からコマンドプロンプトに戻ると、wsl env
次のメッセージが表示されます。
LANG=C.UTF-8
私は主に Windows ユーザーなので、この問題を解決するために何が起こっているのか十分に理解していません。に続いて を実行した場合とwsl env
同じ結果をLANG
変数に対して得るにはどうすればよいですか?wsl
env
答え1
Clonkex、これは「bash」シェルの呼び出しに帰着します。「wsl」を実行すると、bash は対話モードで実行されます。ただし、「wsl」を実行すると、非対話モードで実行されます。
のbash マニュアルページさまざまな形式の呼び出しで、さまざまな起動スクリプト (.bashrc、.bash_profile、.profile など) を実行する方法について説明します。
UNIX/Linux 環境では、通常、実行時に「-i」を指定して bash を対話モードで実行するように強制できます。しかし、wsl ではそれが許可されていないようです。
非対話型モードの場合でも環境変数を設定したい場合は、/etc/profile にこれを行うためのコマンドを追加するか、(推奨) /etc/profile.d/ に新しいファイルを作成してそこにコマンドを追加します。このファイルは、wsl を引数付きで実行するかどうかに関係なく実行されます。