Linux勉強会(LinuxClub)

シェル周りの資料

昔のシェル達

  • Bourne シェル(ボーノ)
  • Tenex C シェル
  • Korn シェル(コーン)

(Bourne シェルのソースコード) http://minnie.tuhs.org/cgi-bin/utree.pl?file=V7/usr/src/cmd/sh

「linux 自作シェル システムコール」で検索したらいろいろ見つかった

シェルの実装

while(1){
    gets();
    // 空白区切りで分割
    // arg配列に代入
    // リダイレクトはfopen -> ストリームをwrite -> fclose
}

田胡先生のアドバイス

  • シェルづくり
  • 標準入力とは何か
  • カーネルの外側
  • man 2 システムコール

★ シェルの作り方

  • システムコール
  • lsで何が起きているのかコードに落とす。

★疑問を書き留めて重要性を仕分けして。答える会。

★カーネルの内側

  • ソースを読んで
  • カーネルのコードはそんなに大きくない
  • 例えばnet, kernel, arch, fsかnet

★mmu とカーネル

  • プロセス管理はハード寄り
  • プロセス切り替え(その仕組み)

★疑問やメモ

  • バイナリとは
  • ネットワークスタック

Linuxのシェルの機能

機能を洗い出してみる

  • 標準入出力

  • リダイレクト

  • パイプ

  • ファイルの実行(コマンド)

  • 変数

  • ★コマンドの解釈・実行(コマンドインタプリタ)

  • コマンド履歴の記録(ヒストリ)

  • コマンド入力・編集の支援

  • ▲コマンド入出力のファイルへの切り替え(リダイレクション)

  • コマンド入出力の連結(パイプライン/パイプ)

  • メタキャラクタの解釈

  • その他:環境の設定、ジョブ管理、コマンドファイル(シェルスクリプト)