@namn1125
Revisions
Report this question
Subscribe question
Help us understand the problem. What is going on with this question?
Q&A

WSL2にてWindows上でまともに使えるシンボリックリンクを作成したい

検証環境

  • WSL: WSL2 Ubuntu 20.04.1 LTS (Focal Fossa)
  • Windows: Windows 10 Pro Version 2004

本題

WSLから bash で普通にシンボリックリンクを作成すると、WSLからしか使用することができないシンボリックリンクができるかと思います。私はデスクトップを作業場として使うことが多いのですが、これだととても不便です。

bash
$ ln -s /mnt/c/Users/ユーザ名/Documents/ .

WSLのシンボリックリンクはWindows上のシンボリックリンクとはみなされない

逆にWindowsのショートカットはWSL上では認識されません。そこで Windowsの シンボリックリンクを作成するスクリプトを組み、それをWSL2から使用することにしました。

lnk
#!/bin/bash

target=$1
dir=`pwd`

name=$(basename $target)
dir=$(echo $dir | xargs wslpath -w)
target=$(echo $target | xargs wslpath -w)

command="'-command \"cd \\\"$dir\\\";New-Item -Value \\\"$target\\\" -Name \\\"$name\\\" -Item SymbolicLink\"'"
# echo "powershell.exe -command start-process powershell -verb runas $command"
powershell.exe -command start-process powershell -verb runas $command

実行例

bash
$ lnk /mnt/c/Users/ユーザ名/Documents/

これでカレントディレクトリ1Documents というシンボリックリンクが貼れます。

スクリーンショット 2020-09-17 063742.png

質問

私は検索力がないので発見できなかったのですが、このようなコマンドはすでにWSL2にあったりしますか?もし存在するならばわざわざ自作コマンドを使用する意味はないので教えていただければと思います。よろしくお願いいたします。


  1. カレントディレクトリのみにしたのはオリジナルの ln コマンドのようにしようとすると実装が大変そうであったのと、そのほうがシンプルでよいと考えたためです。 

2
1
Answer

以下で行けたりしますか?

ln -P リンク元 登録名
0
回答ありがとうございます。m(_ _)m

ファイルの場合は `ln -P` でWindowsからもWSLからも使えるハードリンクが作成できましたが、ディレクトリの場合はシンボリックリンクを挟んでもうまくいきませんでした。。

何かやり方があるのでしょうか?
powershellでされていたような`wslpath`っぽいのを
ln に噛ませる必要がありそうですね。
申し訳ありません、まだよくわかっていないのですが、 `ln -P リンク元 登録名` はWSLから実行するものですか?それともpowershellから行うものですか?

また、リンク元はWindows側で作られたフォルダ/ファイルでしょうか?それともWSL側で作られたディレクトリ/ファイルでしょうか?
説明不足でした。

`ln -P` のはlinuxで実行してください。

windowsではpowershellで作られたので良いと思います。

linux側では通常以下のようにしているところを
ln -s Documents /mnt/c/Users/ユーザー名/Desktop/Documents
以下のように

export WSLPATH="なんかここにいい感じにセットする"
lnk() { ln -s "${WSLPATH}${1}" "$2" }

使い方
lnk -s ${WSLPATH}/Documents /mnt/c/Users/ユーザー名/Desktop/Documents

というので作ると良いと思います。
(自分がやる場合は面倒なのでsambaかonedriveのクライアント使うと思います。)
WSLならば `ln -P` はハードリンクを作成するコマンドということなのだと思いますが、そもそもディレクトリのハードリンクというのは作成可能なのでしょうか...?(いろいろ動かした限りうまくいきませんでした)

何度もすみません。
あら、ファイルシステムが異なるからかハードリンク無理だったのですね。
ご連絡ありがとうございます👍🏻⭐️
View the remaining 6 comments.
Help us understand the problem. What is going on with this answer?
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした