ディストリビュージョンとOS
ディストリビュージョンとは、OSの中核となるLinuxカーネルに加えて、コマンド群やアプリケーションなどを含めてユーザーがそのまま利用できるようにパッケージングされたもの。
これを広義にLinuxとも呼び、Linuxディストリビュージョンとも呼ばれる
仮想化させて動作させているOSのことをホストOSと呼ばれ、仮想化ソフトウェアによって実行する仮想的なOSをゲストOSと呼ばれている
シェル
シェルは、カーネルのインターフェイスプロセスの1つである。
シェル自体の役割はLinuxカーネルとユーザーとの橋渡しを主に行っている。
例として「date」というコマンドを実行した場合。
シェルは「date」というキーボードからの入力を受け取って、それをユーザーからの指示であると解釈する。
→ シェルはdateという文字列が指すコマンドを探し出し、カーネルに実行を依頼する。
→ カーネルがコマンド実行を終了するとシェルが結果を受け取ってユーザーの画面に出力する。
カーネルとシェルが分かれている理由
この理由について主に3点挙げられる。
- カーネルは手に入れず、シェルだけを自分好みに変更させるため
- Linux以外のOSを利用する際もシェルが移植されていれば同様に行うことができるため
- シェルがエラーや高付加でクラッシュしたとしても、OS本体であるカーネルへの影響を最小限に抑えることができるため
プロンプト
プロンプトは、シェルが「何かコマンドを入力してください」と意思表示している状態のことを指す。
プロンプトの表記方法について「一般ユーザーは$
、スーパーユーザでは#
」で例示される。
シェルスクリプト
コマンドは直接操作するだけでなく、実行したいコマンド群を事前にファイルに記述し、そのファイルをシェルに指定することで一連のコマンドをまとめて実行することができる。
このような一連の操作の流れを記述したファイルのことをシェルスクリプトと呼ぶ。
シェルの種類について
sh
シェルスクリプトを記述する際に一般的に使用される。
ただし、古いシェルのため機能が少なく対話型に使うには非常に不便であることからログインシェルとしては使用されない。
csh
csh後継のtcshがあるため、ほとんど使用されることはない
bash
shを基本とし機能を拡張したシェル。
対話型操作を行う上で十分な機能を持ち、多くのLinux環境でデフォルトのログインシェルとして使用されている。シェルスクリプトを記述するためにも向いている。
tcsh
Cシェル系のシェルで、特に対話型操作で便利な機能を多く持つ。
しかし、シェルスクリプトの記述には向いておらず、一般ユーザのプロンプト記号は%
が使われる。
zsh
他のシェルの機能を取り込み、独自の拡張を加えたシェルである。
機能面では優れているが、使いこなすのは時間がかかるため初心者向けのシェルではない。
シェルの選定
bashを利用することを勧められている。
理由としては以下のものが挙げられる
- Linuxのデフォルトログインシェルがbashであること
- 対話的に使用する場合やシェルスクリプトを利用する場合でも優れていること
- shとの後方互換性を持つこと
- Linux以外でもMac OSなど多くの環境に移植されていること
シェルの一時的な切り替え
単に使いたいシェルを指定することで、使いたいシェルに切り替えることができる。
ex) sh
bash
など
非ログインシェルから抜けるためにはexit
と入力する。
また、ログインシェル自体を変更することもできるがコマンドを誤るとログインできなくなる可能性があるため、基本的にはbashのままで使用すること。
ターミナルとシェル
ターミナルは、ユーザーがコンピューターへ入出力する際に利用する専用ハードウェアのことを指す。
しかし、Linuxを使用するにあたりハードウェアとしてのターミナルは使用されることなく代わりにターミナルエミュレーターが使用される。