Windows Subsystem for Linux でシンボリックリンク

Sponsored Link
ロリポップ!レンタルサーバー

 

前回WindowsマシンにインストールしたWindows Subsystem for Linux(以下、WSL)ですが、シンボリックリンクについて弄ってみたのでメモ。

Windows側の状況

とりあえずWindows側のApacheのhtdocsフォルダで試してみました。

現在は以下のような状態です。

Apacheのドキュメントルートは C:\Apache24\htdocsでして、C:ドライブはできるだけ増やしたくないので、リソースの実体はD:ドライブにフォルダを作ってリンクを張ってます。

C:\Apache24\htdocs
├─bootstraptest [d:\hoge\dev\bootstraptest]
├─phpmyadmin [d:\hoge\dev\phpMyAdmin-4.9.0.1-all-languages]
└─wp [d:\hoge\dev\wp\]

同じようにD:\hoge\dev\link_target ディレクトリを作り、WSL側でシンボリックリンクを作ってどのようになるのかを試してみました。

Sponsored Link

WSL側でシンボリックリンクを作る

まずは、WSLのホームディレクトリにhtdocsのリンクを作ります。

$ cd
$ ln -s /mnt/c/Apache24/htdocs htdocs_win
$ ls -al
 htdocs_win -> /mnt/c/Apache24/htdocs

作ったhtdocs_winの下はどうなっているでしょうか。

$ cd htdocs_win
$ ls -al
 bootstraptest -> /mnt/d/hoge/dev/bootstraptest
 phpmyadmin -> /mnt/d/hoge/dev/phpMyAdmin-4.9.0.1-all-languages
 wp -> /mnt/d/hoge/dev/wp/

Windowsで作ったリンクはそのまま使えるようになっていました。

では、WSLからリンクを作ってみましょう。

$ ln -s /mnt/d/hoge/dev/link_target link_target
$ ls -al link_target
 link_target -> /mnt/d/hoge/dev/link_target

きちんと出来ていますね。この後このフォルダにテキストファイルを作って見ましたが、問題無くファイルは作られていました。

それではWindows側から見たらどうなっているでしょう。

エクスプローラでC:\Apache24\htdocsを見てみます。

WSLで作ったシンボリックリンク

おっと、ファイルで認識しています。

当たり前の話ですが、開こうとすると使うアプリケーションを聞かれます。

WSL側としては問題無いのですが、これではややこしくなるので、シンボリックリンクはWindowsで作るようにしようと思います。

当然、WSLの中のリソースでしたら、WSLでリンクを作っても何の問題も無いと思います。

リンクを作成する場所によって使い分ける必要がありますね。

mklinkについて

一応Windows側のシンボリックリンクについてもメモ。

コマンドプロンプトを管理者として開く。

mklinkコマンドのヘルプです。

>mklink /?
シンボリック リンクを作成します。

MKLINK [[/D] | [/H] | [/J]] リンク ターゲット

        /D          ディレクトリのシンボリック リンクを作成します。既定では、
                    ファイルのシンボリック リンクが作成されます。
        /H          シンボリック リンクではなく、ハード リンクを作成します。
        /J          ディレクトリ ジャンクションを作成します。
        リンク      新しいシンボリック リンク名を指定します。
        ターゲット  新しいリンクが参照するパス (相対または絶対)
                    を指定します。

追記:Windows 10のアップデートでこのシンボリックリンク問題が解決されそうです。

@ITさん:【次期Windows 10】WSL 2がついにNTFSのジャンクション/シンボリックリンクに対応

【次期Windows 10】WSL 2がついにNTFSのジャンクション/シンボリックリンクに対応Windows 10の次期機能アップデート「19H2」がそろそろ公開に向けて最終フェーズに入りつつある。また、2020年春リリース予定の「20H1」も着々と機能更新が行われ、WSL 2がNTFSのジャンクションやシンボリックリンクに対応した。
【次期Windows 10】WSL 2がついにNTFSのジャンクション/シンボリックリンクに対応 www.atmarkit.co.jp
【次期Windows 10】WSL 2がついにNTFSのジャンクション/シンボリックリンクに対応

 

Sponsored Link