BashやZashなどUnix環境では「シェル」が重要な役割を担っています。これら著名なシェルには複雑な機能が実装されていますが、シェルの基本機能は、ユーザーの入力をうけとり他のプログラムを起動するというシンプルなものです。
本日紹介する「Writing a Unix Shell」は、シンプルなUNIX用のシェルをC言語を使って実装するためのドキュメントです。開発者Indradhanush Gupta氏によって作成された文書で、現在Part I、Part IIが公開されています。
Part Iでは、起動後ユーザーの入力を待ち受け、入力を解析し、コマンドを実行し、戻り値を受け取る、というシェルの基本的な流れが説明されています。なかでも特に重要なプロセスを複製するする「fork」に関して重点的に解説が行われています。
Part IIではでは、他のプロセスを実行する際重要になる「exec」およびそのファミリーの関数に関して掘り下げられています。
サンプルプログラムはC言語で書かれていますが、プログラムの構造自体はそれほど難しいものではありません。いつも使っているシェルがどのような構造になっているのか興味のある開発者の方は参照してみてはいかがでしょうか。