環境変数WSLENVの動作
2018年春のWindows 10アップグレードから環境変数WSLENVという新しい機能が追加された。この環境変数はWindowsとWSLの間で受け継ぎを行う環境変数を指定するためのもので、WSLとWindowsのシームレスな利用を実現するために利用できる。WSLENV環境変数の主な指定方法は次のとおり。
■環境変数WSLENVの使い方
WSLENV=環境変数名
■環境変数WSLENVの使い方 変換オプションを指定する場合
WSLENV=環境変数名/オプション文字
複数の環境変数を持っていく場合には次のようにコロンで区切って指定する。
■環境変数WSLENVの使い方 複数の環境変数を指定する場合
WSLENV=環境変数名/オプション文字:...
WSLENVに指定する環境変数にはスラッシュ区切りでオプション文字を指定することができる。オプション文字はp、l、w、uの4つ。オプションを指定した場合や指定しなかった場合には変換が次のように変わってくる。
変換方向 | オプション | 意味 |
---|---|---|
Windows→WSL | 指定なし | 何も変換しない |
Windows→WSL | /p | WindowsパスをLinuxパスに変換(例: ドライブ:→/mnt/c) |
Windows→WSL | /l | 対象をパスリストとして展開しつつ、WindowsパスをLinuxパスに変換 |
Windows→WSL | /u | WindowsパスをLinuxパスに変換しない |
変換方向 | オプション | 意味 |
---|---|---|
WSL→Windows | 指定なし | 何も変換しない |
WSL→Windows | /p | LinuxにおけるWindows領域のパス(/mnt/c/以下など)をWindowsのWindowsパスに変換(例: /mnt/c/→ドライブ:) |
WSL→Windows | /l | 対象変数をパスリストとして展開しつつ、LinuxにおけるWindows領域のパス(/mnt/c/以下など)をWindowsのWindowsパスに変換(例: /mnt/c/→ドライブ:) |
WSL→Windows | /w | LinuxパスをWindowsパスに変換しない |
環境変数WSLENVを使うとWindowsとWSLの間で環境変数の共有が可能になる。ただ、この機能を使うのはコーディングにせよツールの活用にせよ、エキスパートのユーザーが多いかもしれない。環境変数といったものがそもそもわからないような場合、こうした機能があるということだけでも覚えておいてもらえればと思う。
Windows→WSLへ環境変数を引き継ぐ場合
WindowsからWSLへ環境変数を引き継ぐ場合の使用例は次のとおり。
WSL→Windowsへ環境変数を引き継ぐ場合
WSLからWindowsへ環境変数を引き継ぐ場合の使用例は次のとおり。
WSLENVの使いどころは?
WSLENVの使いどころは、WSLをどういった用途で使っているかによって変わってくる。環境変数がどのようにコマンドやアプリケーションの動作に影響を与えているのかよく理解している場合には、この機能の使い方はわかりやすいのではないだろうか。例えば、Windowsに移植されたUNIX系のコマンドやアプリケーションを使うといった用途で、WSLからそのWindows側のプログラムを実行するような場合、この環境変数はかなり便利に利用できる。
ただし、「最小限の労力で最大の効果を上げよう」という本連載の趣旨からすると、この機能はちょっとばかり理解が難しい感じがする。今後必要があればこの機能の使い方を紹介するので、それまではこういった機能があるといったことを覚えておいてもらえればと思う。