メモの日々


2021年11月02日(火) [長年日記]

[windows] WSLメモ

WSLについていくつかメモ。

wsl.exe

wsl.exeコマンドによりWindowsからLinuxコマンドを呼び出すことができる。

PS C:\> wsl uname
Linux

wsl.exeにはディストリビューションの管理(インストールしたり停止したり)を行う機能もある。多機能なので詳しくはヘルプやドキュメントを参照のこと。

PS C:\> wsl --help

環境変数WSLENV

環境変数WSLENVに環境変数名を指定することで、WindowsとLinuxで環境変数を共有することができる。

$ abc=100 def=200 cmd.exe /C echo %abc% %def%
%abc% %def%

$ abc=100 def=200 WSLENV=abc cmd.exe /C echo %abc% %def%
100 %def%

$ abc=100 def=200 WSLENV=abc:def cmd.exe /C echo %abc% %def%
100 200

WSLENVに指定する環境変数名にはフラグを付けられるが、/p と /l を使うと現在の自分の環境だとコアダンプしてしまう…。このissueが近い気がするけれどこれは修正済みだと思われる。

$ abc=100 def=200 WSLENV=abc/w:def cmd.exe /C echo %abc% %def%
100 200

$ abc=100 def=200 WSLENV=abc/u:def cmd.exe /C echo %abc% %def%
%abc% 200

$ abc=100 def=200 WSLENV=abc/p:def cmd.exe /C echo %abc% %def%
zsh: segmentation fault  abc=100 def=200 WSLENV=abc/p:def cmd.exe /C echo %abc% %def%

$ abc=100 def=200 WSLENV=abc/l:def cmd.exe /C echo %abc% %def%
zsh: segmentation fault  abc=100 def=200 WSLENV=abc/l:def cmd.exe /C echo %abc% %def%

/bin/wslpath

wslpathコマンドを使うとパスの形式をWindows用とLinux用に相互変換できる。

$ wslpath -u 'C:\abc\def'
/mnt/c/abc/def

$ wslpath -w /home
\\wsl$\Debian\home

$ wslpath -m /home
//wsl$/Debian/home