LoginSignup
1
0

More than 1 year has passed since last update.

ダブルクリックで WSL シェルスクリプト起動

Posted at

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

こちらはディストリビューションのカレントディレクトリがホームディレクトリになっているようです。

以上です。お疲れさまでした。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0