地方在住IT系ニート

bkds

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の行き来がスムーズになります。

<-- Back to home
にほんブログ村 IT技術ブログ IT技術メモへ PVアクセスランキング にほんブログ村