Windows の WSL で自作のシェルスクリプトを手軽に起動させる方法
まずシェルスクリプトを作ります。次にバッチファイルを作って、そのショートカットをデスクトップに貼ります。あとはそのショートカットをダブルクリックするだけです。とても簡単ですね。
サンプル1
test.sh(シェルスクリプト)
#!/bin/bash
echo 'success!'
sleep 3
test.bat(バッチファイル)
wsl ./test.sh
上記の二つのファイルを作ったら、エクスプローラーを開いて、例えば、C ドライブの C:\Users\ユーザ名
やドキュメント
などに置きます。あとはバッチファイルのショートカットをデスクトップに貼って、ダブルクリックすればオッケーです。
このやり方で仕上げた自作のスクリプトを note に公開しています。よかったら覗いてみてください。
ダブルクリックで<作成日と通し番号>自動入力のテンプレート
ただこの方法だと、test.bat と test.sh を Linux 側のホームディレクトリに置いた場合、うまく動きません。バッチファイルを実行すると、UNC パスはサポートされません。Windows ディレクトリを既定で使用します。
と表示されます。
wsl ./test.sh
では、パスが正しく認識されていないようです。
なのでwsl /home/<ユーザ名>/test.sh
のようにフルパスにします。これでオッケーです。
わかりやすいようにもう一つサンプルを挙げておきます。
サンプル2
work/
├── test.sh
└── test.bat
test.sh
#!/bin/bash
echo 'success!' > /home/<ユーザ名>/work/result.txt
test.bat
wsl /home/<ユーザ名>/work/test.sh
work ディレクトリの置き場所は、既定のディストリビューションのホームディレクトリです。
バッチファイルを実行して work ディレクトリの中に 新たに result.txt が作られ、success! と書き込まれていたら成功です。
Windows の C ドライブに置くよりも、こちらのほうが確かにパフォーマンス的にはいいかもしれません。
あと、検索すると、pushd %~dp0
を使う方法もあるようです。
https://grum.hatenablog.com/entry/2015/06/03/072310
サンプル3
test.sh
#!/bin/bash
echo 'success!' > ./work/result.txt
test.bat
pushd %~dp0
wsl ./work/test.sh
こちらはディストリビューションのカレントディレクトリがホームディレクトリになっているようです。
以上です。お疲れさまでした。