WSL2

Windows側のPowerShellからwslpathを直接実行すると結果がおかしくなる

要約:引数を渡すときは、シェルによる解釈を考慮しないと正常な値が返ってこないことがある。

Windowsのホームディレクトリ

例として、Windows側のホームディレクトリを、WSLからみたパスに変換することを考える。

Windowsのホームディレクトリは、PowerShellの変数$HOMEで取得できる。

PS> $HOME
C:\Users\username

Windows側のPowerShellからwslpathを直接実行する方法

次のように打つことで、Windows側のPowerShellからwslpathを直接実行することができる。

PS> wsl wslpath パス

wslpathでWindowsのホームディレクトリを取得

しかし、単純にパスの部分に$HOMEを指定して、

PS> wsl wslpath $HOME

と打ってもうまくいかない。

引数を渡すときはシェルによる展開を意識する

クオーテーション記号’付きのパス

'C:\Users\username'

をwslpathに渡すことを意識しなければならない。

そこで、次のようにする。

PS> wsl wslpath "'$HOME'"

このように引数を指定することで、PowerShell上で

“‘$HOME'”

‘C:\Users\username’

に展開され、クオーテーション記号’ごとwslpathに渡されることになり、次のように望んだ結果が返ってくる。

/mnt/c/Users/username

プロフィール

興味のあること、つまづいたこと、考えたことなどを書いています。

カテゴリー

コメント

タイトルとURLをコピーしました