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/ .
逆に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/
これでカレントディレクトリ1に Documents
というシンボリックリンクが貼れます。
質問
私は検索力がないので発見できなかったのですが、このようなコマンドはすでにWSL2にあったりしますか?もし存在するならばわざわざ自作コマンドを使用する意味はないので教えていただければと思います。よろしくお願いいたします。
-
カレントディレクトリのみにしたのはオリジナルの
ln
コマンドのようにしようとすると実装が大変そうであったのと、そのほうがシンプルでよいと考えたためです。 ↩
2 likes