Windows Tips

【WSL】パスのフォーマットを変換する wslpath コマンドの使い方

投稿日:2018年7月26日 更新日:

1. はじめに

Windows と Linux とでは「パス」のフォーマットが違うため、WSL (Windows Subsystem for Linux) では、パス関連の問題が起きがちです。

例えば、Windows において以下のように表現されるパスがあったとします。

C:\Users\foo\work

同じパスを WSL側から表現すると、こうなります。

/mnt/c/Users/foo/work

こちらは、Linux でのパスフォーマットです。フォルダ階層の区切り文字も違いますし、Cドライブは /mnt/c と表現されます。

WSL 上で何か処理を行った場合、WSL は内部でこのパスフォーマットの変換をやってくれるため、あまり問題が起きるようなことはありません。しかし、それでも明示的なパスフォーマット変換を行いたい場合のためにツールが用意されています。

それが、wslpath コマンドです。

2. wslpath コマンド

wslpath は標準で使えるコマンドで、Windows と WSL とのパスフォーマット変換を行うことができます。

オプション

どちらからどちらへの変換なのか、オプションで指定できるようになっています。

※ 通常、コマンドには「使い方」を表示するためのオプションや、manページが用意されているのですが、今のところなぜか用意されていないようです。Release Notes | Microsoft Docs には、以下のように Usage (使い方) が載っています。

wslpath usage:
  -a force result to absolute path format
  -u translate from a Windows path to a WSL path (default)
  -w translate from a WSL path to a Windows path
  -m translate from a WSL path to a Windows path, with ‘/’ instead of ‘\\’

  EX: wslpath ‘c:\users’

順番に説明します。

-a オプション

  • WSL のパスフォーマットで、絶対パスに変換します。
  • 引数で与えた文字列の頭に、カレントディレクトリの絶対パスが追加されるようです。
$ cd ~/work/
$ echo $PWD
/mnt/c/Users/foo/work
$ wslpath -a bar
/mnt/c/Users/foo/work/bar

$PWD は現在いるパス(カレントディレクトリ)を格納している環境変数です。

(例)

引数: bar

出力: /mnt/c/Users/foo/work/bar

-u オプション

  • 引数で与えた Windows のパス を、WSL のパスに変換します。
$ wslpath -u 'C:\Users\foo\work'
/mnt/c/Users/foo/work

(例)

引数: C:\Users\foo\work

出力: /mnt/c/Users/foo/work

-w オプション

  • WSL のパスWindows のパスに変換します。
$ cd ~/work/
$ echo $PWD
/mnt/c/Users/foo/work
$ wslpath -w $PWD
C:\Users\foo\work

(例)

引数: /mnt/c/Users/foo/work

出力: C:\Users\foo\work

-m オプション

  • WSL のパスWindows のパスに変換します。但し、”\” の代わりに “/” が使われます。
$ cd ~/work/
$ echo $PWD
/mnt/c/Users/foo/work
$ wslpath -w $PWD
C:/Users/foo/work

(例)

引数: /mnt/c/Users/foo/work

出力: C:/Users/foo/work

3. WSL を Windows Terminal で利用する場合

WSL を Windows Terminal で利用する場合、ターミナル上に Windows形式のパスを貼り付けても Linux形式に自動変換してくれません (Cmder なら自動変換してくれます)。※ 2020年7月時点

面倒ですが、wslpath コマンドを利用してパスを変換することならできます。

例えば、cd コマンドでカレントディレクトリを移動したいのであれば、まず以下を記述します。

$ cd $(wslpath -u '')

この状態で、'' の中に Windows形式のパスを貼り付けます。

$ cd $(wslpath -u 'C:\Users\foo\Documents')

Enter キーを押して実行します。

$(コマンド) はコマンドの実行結果に置き換わるので、上のコマンドは以下を実行することになります。

$ cd /mnt/c/Users/foo/Documents

4. おわりに

wlspath コマンドを使う機会はあまりないかもしれません。しかしいざ必要な状況になった時には、なるべくすぐに存在を思い出して必要なオプションを調べたいものです。そんな時に本ページが役に立つと思います。

📂-Windows Tips

執筆者:labo


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

Windows

Windows 10 の VirtualBox で「仮想マシン “XXXX” のセッションを開けませんでした。」というエラーが発生する問題

Windows 10 の VirtualBox で「仮想マシン “XXXX” のセッションを開けませんでした。」というエラーが発生する問題への対応方法

Windows

【Windows 10】ノートPCのバッテリーのヘタり具体を調べる

Windows 10において、バッテリーのヘタり具体を調べる方法を紹介します。

docker

WSL から Docker Desktop の docker.exe が普通に実行できました

Docker Desktop の docker.exe が、WSL から普通に実行できたというお話です。

Windows 10 で「ネットワークの場所(プロファイル)」を「パブリック」から「プライベート」に変更する方法

Windows 10 で「ネットワークの場所」を「パブリック」から「プライベート」に変更する方法について説明します。

Windows

「Windows 追跡アプリの起動を許可してスタート画面と検索結果の質を向上します」は誤訳なのでは?

Windows 10 の [設定] – [プライバシー] – [全般] を開くと、 Windows 追跡アプリの起動を許可してスタート画面と検索結果の質を向上します という項目 …