📝

[WSL]クリーンインストール直後でもgithubに草を生やしたい

2023/08/29に公開

https://qiita.com/items/2733e2fe5f7a6c550b21


お詫び

Qiitaの元記事にて、区切り線を「---」で書いている場所があり、これがZennの記法に干渉して一部うまく表示できない記事がある事を認識しています。
全ての記事を精査しきれていないため、お手数ですがお見かけの際は教えていただけると大変喜びます。


結論

WSLをクリーンインストールする場合はWSLの機能に依存しない方法を検討すべき

言われてみれば当たり前なんですが、何とか環境構築しようと頭を凝り固めてしまったので、戒めとして記します。

発端

  • 私はWSLを愛用している
  • 頻繁にWSLをリセットする運用をしており、githubに草をはやしていたスクリプトが飛んだ
  • 気づいた頃に作り直すも、githubが荒野になっていた

ループ。

つまり「WSLにCron入れて実行すればよくね?」では、WSLをリセットする度に環境構築しなければならないし、そのためShellを使うことはできない[1]という問題があります。

手順

Windowsだと

  1. batを作る
  2. タスクスケジューラを設定する(プログラム: batのパス)

Macだと

  1. shを作る
  2. cronを設定する

どちらも共通して

git clone
echo %date / echo $(date "+%Y/%m/%d")
git add~push
del リポジトリ / rm -rf リポジトリ

やってる事は同じですが、書き方がbat,shの作法で異なります。

ハマったポイント

「WSLでcron動かせばよくね?」と考えたあたりから怪しくなりました。
気付けば上の通りシンプルですが、WSLで定期実行したいものがあったので、どうしてもcronから抜け出せなかったです。

たとえば「WSLで動かしたいshellがあり、WSLの状況を気にせずクリーンインストールした後でも動かせるようにしたい」という要件であれば

  1. shを作る
  2. タスクスケジューラを設定する(後述)

上記と比較すると、作ったファイルがbatかshかの違いですが、タスクスケジューラの設定を

  • プログラム: wsl
  • 引数の追加: /mnt/.../フルパス

としましょう。

なお、powershellでもできますが、実行権限の制御をする必要があり面倒くさいので慣れていないならbatで完結させる事をおすすめします。

読了後いいね!をお願いします。

どれだけの方に読んでもらっているか知りたいので、お手数をおかけしますがご協力いただけると嬉しいです。

注釈

脚注
  1. 普段はMacを使うのですが、凝った開発をする時はWindowsを使っているため、このような状態になっています。
    そのために、windowsで実行する場合はbat、MacやLinuxで実行する場合はshを使う事になります。 ↩︎

GitHubで編集を提案

Discussion