• ベストアンサー

シェルの作りかた

LinuxやMacについているシェルってどうやって作るんでしょうか? 自作してみたいんですが 参考になるサイトか書籍があれば教えていただけるとうれしいです。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • chie65535
  • ベストアンサー率44% (8567/19468)
回答No.1

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

ainobakuda
質問者

お礼

気長にやっていきたいと思います。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • シェル

    UNIXでの開発を始めたばかりの初心者プログラマです。 バッシュやCシェルなどのカスタマイズ(例えばよく使うコマンドを登録するなど)を行いたいのですが、参考サイトや書籍があったら教えて下さい。

  • シェルコマンドについて

    先日自分のPCにやっとLinuxをインストールし、UNIXの勉強に励もうと思って いるのですが、基本的なシェルコマンドがまだよくわからなく苦戦しています。 もし、『シェルコマンド一覧表』みたいなのが、記載されているサイトがあるならば、URLを教えて頂けませんか?  また、効率の良いシェルコマンドの覚え方があったら教えて下さい。  宜しく御願いします!

  • シェルスクリプトで困っています 2

    度々申し訳ございません。 現在、Linuxマシン1からLinuxマシン2へTelnetでログインし、Linuxマシン2上にあるシェルスクリプト(/bin/sh)を実行し、Linuxマシン2上のプログラムを実行した後、Linuxマシン2からログアウトするシェルスクリプトを作成中です。 その、Linuxマシン2からログアウトする際に、 "exit"を記述しているのですが、その"exit"がTelnetログアウトの意味で実行されず、シェルスクリプトを終了するの意味で実行されていて困っています。 どなたか上手くTelnetからログアウトできるようにシェルスクリプトを組む方法をご存知ではないでしょうか?もし判りましたらご教授下さい。 よろしくお願い致します。

  • Bシェル・Cシェルについて

    会社でシェルを使うことになりました。 OSはSolarisなので、basshが使えると考えていましたが、bashはNGと回答が来てしまいました。 回答はBシェルまたはCシェルを使うということでした。 bashはBシェルの拡張版でLinuxの標準シェルであるという事は知っています。 Bシェルだけの機能を使うのはかなり困難な気がしますし意識して作ったことがありません。 bashかBシェルか意識して使うにはどうすればよいでしょうか?

  • Linux起動時にシェルスクリプトを走らせるには?

    いつも参考にさせていただいてます。 私はRedHat7.0でLinuxを勉強中です。 現在、Linuxの起動時にシェルスクリプトを走らせようと思っているのですがうまくいきません。 まだ初心者で手順自体が違っているかもしれませんので、大まかで構いませんので手順を教えてください。

  • シェルについて

    cshやbash、zsh、tcshなど色々ありますがどう違うのでしょうか。 これまであまり考えずにSoalrisやLinuxにログインして普通に作業してきましたが、ただtabやバックスペースが使用できないというだけでzshやtcshにして使用してきました。 ただこれだけ色々シェルがあるとしたら使用方法がいろいろ違うのではないかと思っております。 シェルスクリプトを作成する時の文法が違うとかでしょうか。

  • リナックスのシェルについて

    シェル変数はそのシェル内でのみ有効となる(ほかのシェルやプログラムでは有効にならない)と、ある参考書に書いてあるのですがそのシェル内とはどういうことなのでしょうか?また、その他のシェルに切り替えるにはどうすればよいのでしょうか?

  • Linux・シェルから別PCWindows・バッチファイルを起動したい

    いつも参考にさせていただいています 【やりたい事】 Linux・シェルから別PC Windows・バッチファイルを起動したい 何かヒントがあれば教えてください ※PC Windows・バッチファイル起動からLinux・シェルを実行する方法があれば、こちらも教えてください

  • ログインシェルと対話型シェルの区別について

    ログインシェルと対話型シェルの区別について理解していません。  ログインシェルはpsコマンドで見たときに-bashと表示されると書籍にありました。  テキストログイン(init 3)してpsコマンドをうっても-bashになっていません。  ご存知の方、いらっしゃいますでしょうか?

  • シェルの学習

    私はUNIXを使ったことがないのですが、仕事でシェルを使うことになりました。Linuxで勉強しようと思っているのですが、シェルとは難しいものなのでしょうか。また、どの位の学習時間が必要でしょうか?ちなみにプログラミングはCとJavaのプログラミングの経験はあります。

TD-2130NSAについて
このQ&Aのポイント
  • TD-2130NSAはiPhoneでも使用できるのかについての相談です。Bluetoothの機械を購入すれば、iPhoneだけでラベルを作って印刷することができるか確認したいと思っています。
  • お使いの環境はiOSです。接続方法に関しては具体的な情報が提供されていません。
  • 関連するソフト・アプリや電話回線の種類についての情報も提供されていません。
回答を見る