Linux勉強会(LinuxClub)
シェル周りの資料
Linux上でシェルが実行される仕組みを,体系的に理解しよう (bash 中級者への道) - 主に言語とシステム開発に関して
システムコールとシェルスクリプトを利用して、Fortranのコードから「ディレクトリがなければ作る」を実行 - dynamicsoar’s log
イントロダクションhttp://bacspot.dip.jp/virtual_link/www/si.musashi-tech.ac.jp/www/os_basis/top.html
昔のシェル達
- 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のシェルの機能
機能を洗い出してみる
標準入出力
リダイレクト
パイプ
ファイルの実行(コマンド)
変数
★コマンドの解釈・実行(コマンドインタプリタ)
コマンド履歴の記録(ヒストリ)
コマンド入力・編集の支援
▲コマンド入出力のファイルへの切り替え(リダイレクション)
コマンド入出力の連結(パイプライン/パイプ)
メタキャラクタの解釈
その他:環境の設定、ジョブ管理、コマンドファイル(シェルスクリプト)