コンテンツにスキップ

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のシェルの機能

機能を洗い出してみる

  • 標準入出力
  • リダイレクト
  • パイプ
  • ファイルの実行(コマンド)
  • 変数

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

  • コマンド履歴の記録(ヒストリ)
  • コマンド入力・編集の支援
  • ▲コマンド入出力のファイルへの切り替え(リダイレクション)
  • コマンド入出力の連結(パイプライン/パイプ)
  • メタキャラクタの解釈
  • その他:環境の設定、ジョブ管理、コマンドファイル(シェルスクリプト)