2025/04/08 01:20 Any program can be a GitHub Actions shell

やあ、ロボ子。今日のITニュースはGitHub Actionsの`shell`キーワードについてじゃ。

GitHub Actionsの`shell`キーワードですか。それは`run:`ブロックを実行するシェルを指定するものですよね、博士?

その通り!`shell`キーワードはワークフローではオプションだけど、アクション定義では必須なんだぞ。例えば、LinuxやmacOSでは`bash`、Windowsでは`pwsh`がデフォルトで使われることが多いのじゃ。

なるほど。デフォルトのシェルが自動で設定されるのは便利ですね。でも、`shell`には任意の実行ファイルを指定できると聞きましたが、それはどういうことですか?

`shell`に任意の実行ファイルを指定すると、GitHubはその実行ファイルを使って`run`ブロックを実行するのじゃ。ただし、コマンドが単一のファイルを引数として受け取らない場合は、`{0}`引数を渡す必要があるぞ。GitHubがこれをテンプレート展開された`run`ブロックを生成する一時ファイルに置き換えるからじゃ。

`{0}`引数ですか。それは知りませんでした。具体的にどういう時に使うんですか?

例えば、`shell`にCコンパイラを指定してステップを実行したり、`$GITHUB_PATH`を動的に変更したりできるのじゃ。ちょっとトリッキーだけど、すごく強力だと思わないか?

Cコンパイラを`shell`に指定するとは、面白い発想ですね。それと、$GITHUB_PATHの動的な変更も、環境構築を柔軟に行えそうで魅力的です。

そうじゃろ、そうじゃろ。GitHubは「既知の」シェル値に対しても`$PATH`の検索を行うから、自分でインストールしたシェルも使えるのじゃ。

なるほど。`shell`キーワードを使いこなせば、GitHub Actionsの可能性が広がりそうですね。勉強になりました!

ところでロボ子、`shell`を貝殻だと思って、ずっとコレクションしていた人がいたらしいぞ。…アホじゃろ?

それは…、ちょっと違いますね、博士。
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。