- ベストアンサー
シェルの作りかた
LinuxやMacについているシェルってどうやって作るんでしょうか? 自作してみたいんですが 参考になるサイトか書籍があれば教えていただけるとうれしいです。 よろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
bashなどのソースコードを入手して、ソースコードを読むのが一番早い。 要は、以下の処理をするアプリを作れば良い。 1.コンソールから1行入力する。 2.入力された1行を展開する(マクロ展開とか、ワイルドカード文字の展開とか) 3.展開後、コマンドライン単位で解析する(パイプとかリダイレクトとかサブシェル呼び出しも処理する) 4.解析した結果、コマンドがビルトインコマンドなら、自分でコマンドを処理する。 5.さもなくば(外部コマンドであれば)、コマンドに対応したアプリをパスが通った場所から探し、見付かったらアプリを呼び出す。 6.コマンドに対応したアプリが、パスが通った場所にも、カレントディレクトリにも無ければ、エラー表示する。 7.コンソール入力がまだ続くなら1.から繰り返す。入力がEOFで尽きたら終了コードを親プロセスに返して終了する。 ま、最初は「execlp()関数、execvp()関数」とか「fork()関数」とかの勉強が必要かな。 「プログラム中で別プログラムを呼び出す」とか「プログラム中で自分自身のコピープログラムを呼び出す」とかが出来ないとお話になりません。
お礼
気長にやっていきたいと思います。 ありがとうございました。