シェルを作ろう(0)導入編
先日、某理学部情報科学科システムプログラミング実験の課題の一つとしてシェル(コマンドラインシェル)を作りました。 (制作期間2週間、OCamlのインタプリタの作成と並行だったのでえぐかった…) 授業の課題要件を超えて色々と実装したので、せっかくなので記事にします!
環境
シェルといったらCLI,CLIといったらLinux!
ということで、今回は以下の様なLinux環境上向けにシェルを作りました。
- OS: Ubuntu14.04
- コンパイラ: gcc4.8(マイナーバージョンは忘れたのであとで修正します。)
もしかしたらMacやCygwinでも動くかもしれませんが自身がないです。 というのも今回はLinuxのシステムコールの嵐!とまでは行かないまでも、多くのシステムコールを使っているので 互換性は保証されません。
ソースコード
とりあえず、作成したソースコードは以下にあるので、気になった方はぜひご覧ください。
https://github.com/progrunner17/my_shell
次回予告
シェルってなんだっけ?ってなった人こんな画面みたことないですか?
この様にターミナル上で入力を受け取ってコマンドを実行したり色々してくれるプログラムです。*1
という訳で次回は以下のことをやりたいと思います!
- プロンプトの表示*2
- 入力の処理
- コマンドの実行
その次はおそらくforkを使ったプロセスの複製について書きます。
(SECCAMPの応募では時間がなくて全然書けなかったのでぶっちゃけこれを先に書きたい…)
とりあえず導入編はこれで終わり、次回以降実際にシェルの作成の説明をしていこうと思います!
今回こそしっかり最後まで書き上げることを目標にします笑
注釈
*1:GUIシェルなどを考えるとこの定義とは全く異なります。
気になった人は以下リンクなどでより詳しい定義を確認してください。
シェル - Wikipedia