お髭処blog

ドイツのものを中心としたボードゲーム・カードゲームのプレイ記録・感想を中心としたブログです。最新のドイツゲームから、紀元前から伝わるゲーム、旧西ドイツ製のレアゲーム、日本伝統の博打まで幅広くプレイしています。

UNIXのシェルを作っています


Turing Complete FM https://turingcomplete.fm/ を聞いて刺激を受け、UNIXのシェルを作り始めました。

ゼロから作ったのではなく、学習用に公開されているlshを基に機能追加しています。

Cで書いています。macOSで作成、テストしています。
次のものはlshにあった機能です。

  • cd、help、exitコマンド。(内部コマンド)
  • 外部コマンドを実行する機能。(ただし、引数のパースが単にスペースで区切るだけ)
  • Ctrl-d で終了する機能。

これらに、次の機能追加を行いました。

  • "#" 以降をコメントとする機能。
  • 起動時引数としてファイル名がある場合にそれをスクリプトとして実行する機能。
  • (機能ではないけれど)1つだったソースファイルを複数に分割した。

まだできることはほとんどありませんが、とても勉強になります。まずは疎かったシステムコール本を読むきっかけとなりました。
今後、10年ほど前に読んだコンパイラ本を引っ張り出したり、新しい本を買って引数のパースをきちんとしたり、スクリプト向け機能を充実させてみたいです。