シンボリックリンクでBashからWindowsのファイルに簡単アクセス
公式サイトにて、シンボリックリンクを利用しBashからWindowsのファイルに簡単アクセスする方法が紹介されています。Windows環境とUbuntu環境の相互運用
以前紹介したように、Windows環境とWSL上に構築されたUbuntu環境の相互運用性が改善され、Bashから直接Windowsアプリを起動したり、BashからWindows上のファイルを編集できるようになっています。しかしファイルの相互運用において重大な注意事項があります。
WindowsアプリからUbuntu環境内のファイルを直接いじってはなりません。
WindowsアプリからUbuntu環境内(VolFS)のファイルを編集すると、そのファイルは壊れます。
従ってUbuntu及びWindows双方のアプリから共通して編集したいファイルは、Windows環境上(DrvFS)に配置することになります。
パスが深い、そして遠い
Bashから見るとWindowsのドライブ(c:など)は、「/mnt」にマウントされます。例えばBashから「c:」ドライブにアクセスするには、「/mnt/c」にアクセスすることになります。
そして「c:」ドライブ上の「C:\Program Files」にアクセスするには「/mnt/c/Program Files」にアクセスすることになります。
しかしWindows環境内のファイルのパスは長く、入力が面倒です。
しかもパスにスペースが含まれていると、エスケープするか「"」や「'」でパスをくくる必要が出てきます。
Bashで作業しているなら、できればUbuntu環境のユーザーのホームフォルダー「~/」の近くから、Windows環境内のファイルにアクセスしたくなるでしょう。
一部のソフトウェアは/mnt以下のファイルにアクセスできない
ソフトウェアによっては、「/mnt」以下のファイルにアクセスできない、あるいは都合が悪いケースもあります。そこでシンボリックリンクの出番
Windows環境内のフォルダーを指すシンボリックリンクを作成すれば、Bashからユーザーが指定したパスを経由してWindows環境内のファイルにアクセスすることができます。シンボリックリンクの作成作業は、Bashから行います。
従ってこのシンボリックリンクは、Ubuntu固有のシンボリックリンクになります。
シンボリックリンクを作成するには
ここでは例として「C:¥temp(/mnt/c/temp)」フォルダーを指すシンボリックリンクを、Ubuntu環境内のユーザーのホームフォルダー「~/」内に作成します。「~/temp」パスで「C:¥temp(/mnt/c/temp)」にアクセスできるようになります。
1.シンボリックリンクの作成
以下のコマンドを実行し、シンボリックリンクを作成します。
ln -s /mnt/c/temp ~/temp
以上で完了です。
簡単ですね。
注意
シンボリックリンク作成前にシンボリックリンクの作成先に同名のファイルやフォルダーが存在していないことを確認してください。上記の例では、「~/temp」が存在していないことを確認してからシンボリックリンクを作成してください。
2.シンボリックリンクの確認
作成されたシンボリックリンクを確認します。以下のように「~/temp」は「/mnt/c/temp」を指していることが分かります。
3.カレントディレクトリーの移動
「cd temp」でカレントディレクトリーを移動し、「~/temp」フォルダー内のファイル一覧を表示すると以下のようになります。「/mnt/c/temp」フォルダー内のファイル構成と同じです。