はじめに
WSLを利用して開発を行う場合、基本的にはWindows側のテキストエディタを利用してコーディングし、WSL側でアプリケーションを動かすと思います。
こういった場合に、WSLからWindowsで書いたアプリケーションファイルに容易にアクセスできるようにするための方法です。
シンボリックリンクというWindowsでいうショートカット的なものをWSLのホームディレクトリに用意することで対処します。
なお、直接WSLのホームディレクトリを書き換える方法もありますので、その場合は以下の記事を参考にしてください。
WSLにおけるホームディレクトリをWindowsと同じ場所にする環境
- Windows Subsystem for Linux (Ubuntu 18.04)
シンボリックリンクとは?
前述したとおり簡単に言うと『ショートカットみたいなもの』ですね。
厳密に言うとWindowsのショートカットとは異なるのですが、ひとまずはそういう感覚でいいと思います。
WSLのデフォルトのホームディレクトリは『/home/{username}』ですが、WindowsのホームディレクトリはWSLからは『/mnt/c/Users/{username}』にありますので、WSLのホームディレクトリからここに行こうと思うとちょっとアクセスしづらいですよね。
ということで、例えば、WSLのホームディレクトリに『/mnt/c/Users/{username}』までのショートカットを作ってやれば簡単に行けるよね、って話です。
{username}の部分はそれぞれのユーザー名を代入して考えてください。『{username}』とそのまま打ち込まないように。
{} ←このカッコもそれを表しているだけで、入力は不要です。
例えばユーザー名が『fuchiaz』なら『/mnt/c/Users/fuchiaz』となります。
方法
例えばWindowsのCドライブ中にあるユーザーフォルダはWSLから見ると、先ほど示しているように『/mnt/c/Users/{username}』となります。
これを参考にリンク先のパスを調べてください。
今回は試しにユーザーフォルダの下に『linux_sym_link』というフォルダを用意しました。
ココへのパスは『/mnt/c/Users/{username}/linux_sym_link』となることはわかると思います。
※ユーザー名だけ隠してます
WSLからはココへのリンクを貼ってみます。
それではWSLのUbuntuのbashから、先ほどのフォルダへのリンクを作成しましょう。コマンドは次のとおりです。
ln -s /mnt/c/Users/{username}/linux_sym_link ~/linux_sym_link # ln -s リンク先(行きたい場所・出口) リンクを作る場所(入口)
ln
リンクを作成するコマンドです。
-s
先ほどのリンクを作成するコマンドのオプションで、-sを指定するとシンボリックリンクを指定したことになります。
/mnt/c/Users/{username}/linux_sym_link
リンク先(つまりWindows側)のパスを入力します。先ほどの手順で書いたとおりなので良いでしょう。
~/linux_sym_link
Windowsへのリンクの入り口となるパスを指定します。WSLのホームディレクトリに『linux_sym_link』という先ほどと同名のフォルダを用意してそこを入り口にしたいのでこのようにしてみました。
※Winユーザー名、無関係なディレクトリ名を伏せています。
このように試しに作成したシンボリックリンクをたどってみると、Windows側の指定したフォルダへのリンクになっていることがわかると思います。
ちなみに、『ls -l』コマンドでどこに対してリンクが貼られているかを確認することができます。
リンク先を間違えた場合は?
unlink シンボリックリンク
例えばシンボリックリンクの宛先を間違えて入力してしまった場合や、リンクが不要になった場合などは『unlink』コマンドでリンクの削除が可能です。
↑はわざとリンクの宛先を間違えたパターンですが、リンクの宛先が不適切な場合は文字色が変わって表示されるようです。
(隣の linux_home というのがきちんと貼れているリンクです)
なお、unlinkコマンドで削除されるのはあくまでリンク部分のみであり、宛先の(ココだと /mnt/c/Users/{username}/linux_sym_link の)中身が削除されるわけではありませんので安心してください。
おわりに
以上、シンボリックリンクの作成方法をご紹介しました。
WSLとWin側を行ったり来たりするのは面倒だと思うのでシンボリックリンクを活用しましょう。