今回はシェルについて解説していきたいと思います。
Linuxを扱う上で普段シェルは意識することなく使用することができておりますが、シェルをカスタマイズしたら、障害が起きた際には原因究明に役立てたりなど、知っておくと便利です。
本記事ではシェルの概要と活用方法について紹介していきます。
目次
シェルとは
シェルは、LinuxでOSとユーザの仲介をするユーザインターフェイスです。ユーザが入力したコマンドを1つずつ解釈し、カーネルへ実行を依頼します。
Linuxにはファイルシステムなど、OS(オペレーティングシステム)の各種制御を行うプログラムが備わっています。このプログラムは「シェル」と呼ばれ、「コマンド」という形でユーザーが使えます。
Linuxの標準シェルはbashですが、他のシェルを使用することもできます。
シェルの種類についてはこの後紹介します。
カーネル
カーネルはOSの中核となる部分です。CPUやメモリを管理し、コマンド実行を処理するプロセス管理も行っています。ユーザからコマンドの実行がされシェルを通してカーネルへコマンドの実行命令を処理し、実行結果を返します。
※カーネル カーネル(kernel)とは、オペレーティングシステム(OS)の基本機能の役割を担うソフトウェアを指しており、アプリケーションの実行を許可し、プロセス管理を行います。
シェルの役割
ユーザとカーネルの仲介をするプログラムで、入力や出力などの命令を受け付けます。
シェルの役割は、ユーザーのコマンドによる命令をカーネルに伝えることです。そのごカーネルから実行結果がターミナルを通してユーザに結果が返ります。
ユーザーは基本的に、ターミナルからLinuxを操作します。
現在のシェルについて
ターミナルを起動するとシェルが起動しますが、ログイン時に起動するシェルをログインシェルと言います
ログインシェルは現在のLinuxOSであればbash利用されており、bashが起動されます。シェルにはいくつか種類がありますので、後ほど紹介します。
自分が使用しているシェルの確認は、『echo $SHELL』で確認できます。
mitsublog@mitsublog:~$ echo $SHELL
/bin/bash
mitsublog@mitsublog:~$
結果『/bin/bash』が出力されました。
シェルの種類
シェルには種類が多くあります。一般的使用されるのはにはbashですが、用途に合わせて使い分けることができます。ですが現状bash以外使われることはあまりありませんので、
ここではbashを覚えていただければ問題ないかと思います。こういったものもあるのだと紹介程度とさせていただきます。
シェルには種類がたくさんあるので、ここでは代表的なものを紹介します。
sh
古くから存在しているシェルで、Linuxに限らず、他のOSでも使用できます。
特徴として機能がbashと比べ少なく、対話的に使うには不便で主にシェルスクリプトで使用します。
そのため、ログインシェルとして使用することは現在はほとんどありません。
bash
shを基本として、機能を拡張したシェルです。
対話型操作を行う上での機能を持ち、Linux環境でデフォルトのログインシェルとして使われています。
csh
古くから存在しているシェルで、Cシェルと呼ばれてます。
対話型操作が便利になる機能を実装されましたが、
シェルの文法がshと異なっており、シェルスクリプトを書く上では欠陥があるため現在はsh同様現在は使用されておりません。
tcsh
cshの後継として開発されたシェルです。
対話型操作で便利な機能を多く持っていますが、シェルスクリプトを書くのに向いてなく、csh同様現在いは使用されておりません。
zsh
比較的新しいシェルです。他のシェルの機能を積極的に取り組み、独自の拡張を加えたシェルです。
多くの機能を持ており、機能面では他のシェルより多いですが、使いこなすにはかなりの労力が必要で初心者には向いておりません。
主な利用例
ログインシェルの確認
ログインシェルを確認するには環境変数で定義されている$SHELLの値を確認します。
echo $SHELL
bashの場合
mitsublog@mitsublog:~$ echo $SHELL
/bin/bash
mitsublog@mitsublog:~$
履歴の表示
historyコマンドで履歴を表示します。シェル変数の設定にはデフォルトで10行まで表示するようになっています。
mitsublog@mitsublog:~$ history
1 ifconfig
2 ls
3 ifconfig
4 sudo su
5 ifconfig
6 exit
mitsublog@mitsublog:~$
オプションなど詳しくはhistoryの記事で紹介しています。
履歴の保存
リダイレクト機能を利用して下記のようにファイルに保存することもできます。
mitsublog@mitsublog:~$ history > file1
mitsublog@mitsublog:~$ cat file1
1 ifconfig
2 ls
3 ifconfig
4 sudo su
5 ifconfig
6 exit
シェルの切り替え:sh
ログインシェルは「bash」となっていますが、shシェルへ切り替えます。「exit」を入力することでshの状態からbashに戻れます。
mitsublog@mitsublog:~$ sh
$ exit
mitsublog@mitsublog:~$
まとめ
シェルについての概要、種類や利用例について解説しました。基本的にログインシェルはbashとなっておりますので、その他のシェルについては使用する機会はほとんどありません。ただ知っておいて損はないのでぜひ覚えていってください。
当ブログでは主にLinuxやプログラミング言語などについて解説していきますので、興味があるかたはぜひ見ていってください、