WSL
WSLとWindowsの連携
WSLからWindowsのアプリやファイル、クリップボードを使う方法と、Windows側からWSLを操作する wsl.exe のコマンド。
ファイルの場所
| 見たいもの | パス |
|---|---|
| WSLから Windows の C ドライブ | /mnt/c/ |
| WSLから Windows のユーザーフォルダ | /mnt/c/Users/<Windowsのユーザー名>/ |
| Windowsから WSL のホーム | \\wsl$\Ubuntu\home\<ユーザー名>(エクスプローラーのアドレス欄に入力) |
explorer.exe今のフォルダをエクスプローラーで開く
Windows の .exe は WSL からそのまま実行できます。
$ explorer.exe . # 今のディレクトリをエクスプローラーで開く
$ notepad.exe memo.txt
$ cmd.exe /c ver # Windows のコマンドを実行
$ powershell.exe -c 'Get-Date'wslviewWindows の既定のアプリで開く
Windows の既定のアプリやブラウザで、ファイルや URL を開きます。
$ wslview https://example.com # Windows の既定のブラウザで開く
$ wslview report.pdf # PDFを既定のアプリで開くxdg-open の代わりに使えます(BROWSER=wslview を設定すると、多くのツールがブラウザを開くときに使います)。
wslpathLinux と Windows のパスを変換する
Linux のパスと Windows のパスを相互に変換します。
$ wslpath -w ~/project # → \\wsl.localhost\Ubuntu\home\alice\project
$ wslpath 'C:\Users\alice\Desktop' # → /mnt/c/Users/alice/Desktop
$ explorer.exe "$(wslpath -w ~/Downloads)"clip.exe / xclipクリップボード
Ubuntu には最初から入っていません。 で入れられます。
コマンドの出力を Windows のクリップボードにコピーします。
$ cat ~/.ssh/id_ed25519.pub | clip.exe # Windows のクリップボードへコピー
$ powershell.exe -c Get-Clipboard | tr -d '\r' # Windows のクリップボードから貼り付け
$ echo hello | xclip -selection clipboard # WSLg(X11)のクリップボードwsl.exeWindows 側から WSL を操作する
PowerShell やコマンドプロンプトで実行します。
| コマンド | 意味 |
|---|---|
wsl | 既定のディストリビューションに入る |
wsl -l -v | 入っているディストリビューションと状態・バージョン |
wsl --shutdown | WSL をすべて止める(設定を反映するときに使う) |
wsl -t Ubuntu | そのディストリビューションだけ止める |
wsl -u root | root として入る(パスワードを忘れたとき) |
wsl --update | WSL 本体を更新 |
wsl --set-default Ubuntu | 既定のディストリビューションを変える |
wsl --export Ubuntu D:\ubuntu.tar | バックアップ |
wsl --import Ubuntu2 D:\wsl\ubuntu2 D:\ubuntu.tar | バックアップから復元 |
wsl ~ -e ls -la | WSL のコマンドを1回だけ実行 |
設定ファイル
/etc/wsl.conf — ディストリビューションごとの設定(WSLの中)
[boot]
systemd=true
[user]
default=alice
[interop]
# Windows の PATH を足さない(コマンド補完が速くなる)
appendWindowsPath=false
[automount]
# /mnt/c でも chmod を保存できるようにする
options="metadata".wslconfig — WSL 全体の設定(Windows側)
C:\Users\<ユーザー名>\.wslconfig に置きます。
[wsl2]
# WSL が使うメモリの上限
memory=8GB
processors=4
# Windows と同じネットワークに見せる(LANの他の端末からもつながる)
networkingMode=mirrored
# 使っていないメモリを Windows に返す
autoMemoryReclaim=gradualどちらも、変更したら wsl --shutdown してから開き直すと反映されます。
GUI アプリ(WSLg)
WSLg により、Linux の GUI アプリ(firefox・thunar・xeyes など)はそのまま Windows のウィンドウとして開きます。
$ xeyes & # 動作確認(x11-apps)
$ thunar . & # ファイルマネージャ困ったとき
| 症状 | 対処 |
|---|---|
| 時刻がずれている(スリープ復帰後など) | Windows 側で wsl --shutdown してから開き直す |
| DNSが引けない | /etc/resolv.conf を確認。.wslconfig で dnsTunneling=true |
| ディスクが肥大化した | WSL を止めてから、PowerShell で Optimize-VHD(Hyper-V)や diskpart の compact vdisk |
| グループ追加が反映されない | wsl --shutdown してから開き直す |
wslvar / wslsysWindows の情報を取り出す
Windows の環境変数やシステム情報を取り出します。
$ wslvar USERPROFILE # Windows の環境変数(C:\Users\alice)
$ cd "$(wslpath "$(wslvar USERPROFILE)")/Desktop" # Windows のデスクトップへ移動
$ wslsys # Windows と WSL のバージョンなどwsluscWindows のデスクトップにショートカットを作る
Linux のアプリの、Windows のデスクトップ用ショートカットを作ります。
$ wslusc --name "Thunar" --gui thunar # Linux の GUI アプリのショートカットwsl.exe のインストール関連
PowerShell で実行します。
| コマンド | 意味 |
|---|---|
wsl --install | WSL と Ubuntu を入れる |
wsl --list --online | 入れられるディストリビューション |
wsl --install -d Debian | 別のディストリビューションを入れる |
wsl --unregister Ubuntu | 削除(中身もすべて消える) |
wsl --status | 既定のバージョンなど |
wsl --version | WSL 本体のバージョン |
wsl --manage Ubuntu --move D:\WSL | 保存場所を別のドライブへ移す |
wsl --manage Ubuntu --set-sparse true | 仮想ディスクを自動で縮める |
Windows のコマンドを Linux 側から使う例
$ ipconfig.exe | iconv -f cp932 -t utf-8 | grep IPv4 # Windows の IP(文字化け対策付き)
$ tasklist.exe | grep -i chrome
$ cmd.exe /c start https://example.com # 既定のブラウザで開く
$ powershell.exe -c "Get-Process | Sort-Object CPU -Descending | Select -First 5"
$ code . # VS Code で開く(Remote - WSL)