WSL2でopenコマンドを使えるようにするメモ
はじめに
macOSやLinuxではopenコマンドでファイルやディレクトリをGUIアプリで開けますが、WSL2にはデフォルトでこのコマンドがありません。
explorer.exeコマンドを経由することで、WSL2上でも同様の操作が可能になります。
仕組み
WSL2からWindows側のアプリを起動するにはexplorer.exeを使います。
ただしWSL2のパスはそのままではexplorer.exeに渡せないため、wslpath -wでWindowsのパス形式に変換してから渡す必要があります。
open ~/work/memo.txt
↓
wslpath -w ~/work/memo.txt → C:\Users\user\work\memo.txt
↓
explorer.exe C:\Users\user\work\memo.txt
↓
Windowsの関連付けられたアプリで開く
設定方法
~/.bashrcに以下の関数を追加します。
open() {
if [[ $# -eq 0 ]]; then
explorer.exe .
return
fi
if [[ -e "$1" ]]; then
explorer.exe "$(wslpath -w "$1")" 2>/dev/null
else
printf 'open: %s: No such file or directory\n' "$1" >&2
return 1
fi
}
追加後に設定を反映します。
source ~/.bashrc
使い方
# カレントディレクトリをエクスプローラーで開く
open .
# 引数なしでもカレントディレクトリを開く
open
# 指定のディレクトリをエクスプローラーで開く
open ~/work/
# 指定のファイルを関連付けられたアプリで開く
open ~/work/memo.txt
まとめ
~/.bashrcに関数を追加するだけでWSL2でもmacOSと同様のopenコマンドが使えるようになります。
ファイル・ディレクトリをすべてWindowsのデフォルトアプリで開けるので、WSL2とWindowsの行き来がスムーズになります。