初学者向けにシェルについて書いてみた。
シェルとカーネル
LinuxOSは、内部の仕組みとして、大きく、カーネルとシェルと2つの部分に分ける事ができる。先ず、プロンプトから、dateコマンドをうってみると、当然、システム日付が返ってくる。
$ date
2017年 7月 19日 水曜日 14:47:41 JST
内部的にどのような仕組みになっているのだろうか。dateコマンドが直接カーネルにアクセスして結果を表示してくれるのではなく、シェルに対して命令を出している事になる。そして、シェルがカーネルにdateの処理を渡して、カーネルが処理した結果を、シェルに返して、シェルが画面に結果を表示してくれるという流れだ。つまるところ、シェルとは画面とカーネルのインタフェース的な役割をしているということになる。
シェルの種類
シェルにもいろいろと種類があるらしく、初心者は一般的にこれさえ知ってたらいいよといわれているのが「bash」。なぜ、これがいいかといえば、世間で一番利用者が多く、書籍も多く、情報も溢れている。そしてなにより、一番使いやすいということだ。歴史の話になるが「bash」のひと世代前に「sh」というシェルがあり、それが拡張されて生まれたのが「bash」。「sh」は「Bシェル」ともいう。
「sh」は古いといいながらも、今でも全然現役でバンバン動いているようだ。他にも「csh(Cシェル)」、「tcsh」などの種類があるようだが、どうも、これらはシェルスクリプトを書くには使えないらしい。なので、大抵の人には不要だろう。
シェルの変更
Linuxにログインした時、$
のプロンプトが表示されるが、実はプロンプトが表示するまでの間に、バックでログインシェルなるシェルが流れている。ログイン時に流れるシェルなのでログインシェル。ログインシェルのデフォルトで使用されているのが「bash」。本当に「bash」かどうかコマンドで確認できる。このようになれば「bash」。
$ echo $SHELL
/bin/bash
「sh」に変更してみよう。プロンプトが「~$
」から、単に「$
」に変更したら「sh」シェルに変更したということになる。
$ sh
$
プロンプトから「bash」のコマンドをうつと「bash」に戻る。プロンプトも「~$
」になる。
$ bash
:~$