カーネルとシェル
linuxはOSではない?
linuxは一般的にはOSという認識が強いだろう
実際この認識は正しいのであるがlinuxという言葉だけでは他の意味も存在する
それがカーネルである
カーネルって何
カーネルとはOSを機能させる重要な部分である
会社で例えるなら社長のようなものでこの人がいないとそもそもOSとして機能しない
つまり
カーネルとはOSを成形する上で必ず必要な要素なのだ
しかしカーネルだけではパソコンは作動しない
人間だって社長だけで会社は成り立たないことがほとんどだ
カーネルとあらゆるソフトウェアが一体となって初めてOSとなる
ここでlinuxの話に戻る
一般的にlinuxと呼ばれているのはこのカーネルとあらゆるソフトウェアを組み合わせたものを読んでいる
しかしこのカーネルにも名称があり、それもlinuxである
つまりOSのlinuxとカーネルのlinuxが存在するのである
一般的にダウンロードしているのはOSのlinuxであり、その中身はカーネルのlinuxとあらゆるソフトウェアのことである
シェル
シェルとは簡単に言えば人間の命令をカーネルに伝えるものである
先ほどOSの説明で出てきたソフトウェアの一つである
人間があるアプリを開いて!と伝えたのをシェルがカーネルに伝えてくれる
カーネルが少し待ってと言ったらシェルがそれをデバイスを通じて人間に伝えてくれる
厳密に言えば以下の手順を行う
(1) プロンプトを表示してコマンド入力を受け付ける
(2) ユーザーから入力されたコマンドラインを受け取る
(3) コマンドラインを「コマンド」「引数」などに分解する
(4) ワイルドカードなどがあれば展開する
(5) コマンド・プログラムを検索し,引数を渡して実行する
(6) 実行したプログラムが終了するまで待機する
(7) プログラムが終了したら(1)に戻る
一般的にシェルでは以下のものがある
・sh
・bash
・ksh
・csh
・tcsh
・zsh
OSを触っているとよく出てくるものである
そんなシェルにも派閥がある
赤色がsh派閥で、青色がcsh派閥である
紫は両方の派閥に属している
それぞれの派閥で特徴や使い方が似ている
sh派閥は元々shというシェルから派生したものが属しており基本的なシェルである
一方cshはc言語ぽい書き方をしているのでそのように呼ばれている
シェルスクリプト
シェルスクリプトとはバッチファイルのunix版である
ここでバッチファイルの説明をする
バッチファイル
人間がコンピュータに指示を出す時は基本的にはコマンドプロンプトから打ち込んで指示を出す
しかし同じような操作を何回もしたりあるコンピュータで作ったファイルを他のコンピュータでも作ろうとしたら
同じ作業を繰り返す必要がある
これを無くすのがバッチファイルである
バッチファイルにはコマンドプロンプトに打ち込むあらゆる命令文を一まとめにしたファイルである
めちゃ便利
つまりシェルスクリプトとはシェルで解釈できるあらゆる命令文が書いているファイルである