Linuxで遊ぼう 「シェルについて」

f:id:daihase:20190809104252p:plain

こんにちは、daihaseです。 今日は「Linuxで遊ぼうシリーズ」のシェルについてお話しようかと。

さっそくシェルを触ってみる前に、OSはどうしようかと思ったのですがUbuntuだったりCentだったり色々あるのですが、結構MacがメインPCという方が今は多いと思うのでしばらくはMacで触ってもらって大丈夫かと思います。

ちなみにMacはUnixベースで(正確にはUnix派生)、基本的にはそれを元に作られたLinuxとも近い挙動をするため、一旦こちらでイジイジしていきましょう。(自分はUbuntuにて説明します)

 

シェルとは

まず早速ターミナルを起動してみましょう。 起動したら以下のように date と打ってみましょう。

daihase@X1 $ date
2017年  4月 27日 木曜日 10:59:55 JST

daihase@X1 の部分は環境によって表示が変わってくるのであまり気にせず、$記号より後の部分が入力するコマンドになります。

dateは日付を扱うコマンドなので、現在の日付結果が画面に表示されたかと思います。Linux内部ではこのようにdateコマンドを入力して結果が返ってくるまでに以下のような処理を行っています。

 

 

  1. dateコマンドをキーボードで入力
  2. シェルがdateコマンドを探す(usr/bin/dateへ)
  3. 見つかったらdateコマンドをLinuxカーネルに実行依頼
  4. Linuxカーネルが実行し、その結果をシェルに返す
  5. シェルは結果を受け取りユーザーの画面へ出力

 

ざっくりとこんな感じになります。 このようにシェル、Linuxカーネルを通してこれまで色んなコマンドを実行していたのですね。cdとかpwdとかとか...

 

 

シェルの種類

上で紹介したように、なんでわざわざシェルとLinuxカーネルをわける必要があるんだろうと思った方もいるかと思います。

色々利点はあるのですが、シェルは世の中にいくつかあり、自分で好きなものを選択することが出来ます。 ではどんな種類のシェルがあるのか見てみましょう。

 

sh

最も古Tくから存在するシェルで、AT&Tでスティーブン・ボーンという方が開発したUnix本来のコマンドラインインタプリタです。 FreeBSDやSolarisなどLinuxに限らず使われてきました。 ただ現在は古いシェルとしてあまり活用されなくなりました。

 

csh

こちらも次に古いシェルで、ビル・ジョイという方が学生時代に開発したシェルです。 C言語をモデルとして設計されていてCシェルと呼ばれています。こちらも現在は後続のtcshがあったりと、ほとんど使われていません。

 

bash

これは結構名前も聞いたことがあるという方も多いのではないでしょうか。shを元に機能拡張されたシェルで、現在でも十分な機能を持っているため、MacやLinuxでもログインシェルとしてデフォルト使用されてるくらいです。

 

zsh

今まで紹介したシェルの中でも比較的新しいシェルで、bashの機能を取り込み独自拡張も加えられています。 カスタマイズも容易で、コマンド補完機能、スペルミス修正等々、いたれりつくせりのシェルとなっています。 僕も随分長くお世話になっています。

 

 

おわりに

いかがでしょうか、結構シェル1つとっても奥深く、色々いじったりしてると面白いものです。ただターミナルでコマンド1つ叩くのにも、シェルを自分用にガッツリいじっていれば捗り具合も変わってくるってもんです。

Macなど使ってる方はbashがログインシェルになっているので、ネットなどで公開されているbashrcを参考に色々カスタマイズしてみてもいいかもしれませんね。

 

それではいいLinuxライフを〜