検索

キーワード


【Linux】シェルとは?

  • 公開日:2020-11-06 14:17:01
  • 最終更新日:2020-12-26 23:23:42
【Linux】シェルとは?

シェルとは?

こんにちは。AIX技術者の和田です。

今回の記事では、シェルの概要について解説します。

Linuxの学習をしている際に出てくるシェルって何?という人に向けて理解が深まれば幸いです。


シェルの仕組み

Linuxコマンド実行の仕組み

まず、『シェルとは?』について解説する前にLinux内部でコマンドが実行される仕組みについて少し解説しましょう。

この流れを理解することでシェルへの理解が深まります。

以下は、コマンド実行時の処理です。

① キーボードから入力されたコマンド(ls -l、date等)の文字列を受け取る。

② 入力されたコマンドを探す。

③ 見つけたコマンドを実行する。

④ 実行した結果を画面に表示する。

この処理の③のコマンド実行をLinux本体であるLinuxカーネルが実行します。


カーネルとは?

先程出てきたカーネルとはOSの中核となる部分であり、CPUやメモリを管理し、コマンド実行を処理するプロセス管理も行っています。

先程のコマンド実行処理を見ると、ユーザーが直接Linuxカーネルを操作してコマンドを実行していないのです。


シェルとは?

上の説明にもある通り、Linuxカーネルは元々ユーザーが直接操作できるようになっていません。

コマンドを実行するために、ユーザーとカーネルの間に、コマンド実行等のユーザーインタフェースを持つソフトウェアが必要になります。

シェルとは、カーネルのインタフェースとなっているソフトウェアのことです。

以下がコマンド入力から画面出力の一連の流れです。

1.入力したコマンド(ls -l、date等)をシェルが指定し、Linuxカーネルに実行を依頼します。

2.Linuxカーネルがコマンド実行を終了するとシェルはその結果を受け取り、ユーザーの画面に出力します。


プロンプトとは?

ログインした際に画面の左側に□で囲ったものがプロンプトです。

プロンプト出力

意味としては、コマンド入力待ちで、何かコマンドを入力して下さいという表示です。


ログインシェルとは?

ログインシェルとは、ログイン時に起動されるシェルです。

自分が使用しているシェルの確認は、『echo $SHELL』で確認できます。

出力結果として、『/bin/bash』が出力されました。

ログインシェル確認


シェルスクリプトとは?

シェルスクリプトとは、実行したいコマンド群を事前にファイルに記載しておき、そのファイルをシェルに指定することでコマンド群をまとめて実行する一連の捜査の流れを記述したファイルのことです。

#!/bin/sh

today=$(date '+%d')

if[ $today -eq 30]; then
 echo "今日は30日です"
fi

最初は見慣れない文字ばかりですが、これがシェルスクリプトなんだなと思っていただけば大丈夫です。


シェルの種類

先程ログインシェルとしてのbashが出てきましたが、bash以外にも様々なシェルが存在しています。

シェルには種類がたくさんあるので、ここでは代表的なものを紹介します。

・sh

 古くから存在しているシェルで、Linuxに限らず、他のOS(AIXなど)でも使用できます。

 シェルスクリプトを書く際に使用するのが一般的です。

 古いシェルのため機能が少なく、対話的に使うのは不便です。

 現在ではログインシェルとして使用することはほとんどありません。


・csh

 古くからあるシェルで、Cシェルと呼ばれています。

 shに比べて対話型操作が便利になる機能を実装されました。

 シェルの文法がshと異なり、シェルスクリプトを書く上では欠陥があるため適していません。


・bash

 shを基本として、機能を拡張したシェルです。

 対話型操作を行う上で十分な機能を持ち、Linux環境でデフォルトのログインシェルとして使われます。

 シェルスクリプトを書くのに向いています。


・tcsh

 cshの後継として開発されたシェルです。

 対話型操作で便利な機能を多く持っていますが、シェルスクリプトを書くのには向いていません。


・zsh

 比較的新しいシェルです。bashやtcshを初めとした他のシェルの機能を積極的に取り組み、独自の拡張を加えたシェルです。

 非常に多くの機能を持ており、機能面では他のシェルより圧倒的ですが、使いこなすには時間がかかるので初心者向けではありません。


シェルの切り替え

シェルも一つのコマンドなので、使いたいシェルの名前を指定すれば起動することができます。

ここではデフォルトで入っているshに切り替えてみましょう。

シェル変更

プロンプトが『sh-4.4$』に変わり、shシェルが起動しました。


次にbashに変更してみましょう。

bashに変更

画面だけを見れば元に戻ったように思えますが、実際はbash→sh→bashの順で起動した状態になっています。

切り替えるというよりも重ねて起動しているイメージで捉えると分かりやすいかもしれません。


切り替えたシェルはログインシェルではないので、logoutコマンドでログアウトできません

logout コマンド


非ログインシェルから抜けるためには、exitコマンドを使用します。

下の場合、ログインシェルのbashに戻るには2回exitコマンドを打ちます。

exit コマンド


まとめ

今回はシェルの概要についてを解説しました。

シェルの概要と聞くと難しいと思ってしまいますが、概要を理解することで後の学習の理解が深まるので頑張りましょう!

シェルの理解が出来たら、シェルの機能やシェルスクリプトの学習にステップアップしていきましょう。



【著者】

和田祐輔

AIXからSEとしてキャリアスタート 同じOSというジャンルでありながら、現在Linuxに苦戦中(笑) 初心者やOS経験者でもつまずかないようにこれからもためになる情報を発信していきます!!