Turing Complete FM https://turingcomplete.fm/ を聞いて刺激を受け、UNIXのシェルを作り始めました。
- higedice/hish: HISH (HIge's SHell) is a shell in C and works with UNIX. It's for my study and research. Based on LSH. https://github.com/higedice/hish
ゼロから作ったのではなく、学習用に公開されているlshを基に機能追加しています。
- Tutorial - Write a Shell in C • Stephen Brennan https://brennan.io/2015/01/16/write-a-shell-in-c/
Cで書いています。macOSで作成、テストしています。
次のものはlshにあった機能です。
- cd、help、exitコマンド。(内部コマンド)
- 外部コマンドを実行する機能。(ただし、引数のパースが単にスペースで区切るだけ)
- Ctrl-d で終了する機能。
これらに、次の機能追加を行いました。
- "#" 以降をコメントとする機能。
- 起動時引数としてファイル名がある場合にそれをスクリプトとして実行する機能。
- (機能ではないけれど)1つだったソースファイルを複数に分割した。
まだできることはほとんどありませんが、とても勉強になります。まずは疎かったシステムコール本を読むきっかけとなりました。
今後、10年ほど前に読んだコンパイラ本を引っ張り出したり、新しい本を買って引数のパースをきちんとしたり、スクリプト向け機能を充実させてみたいです。