エンジニアの知識

シェルとシェルスクリプトの違いとは?シェルの種類について

Shellとは?

Shellとは、人間の理解できる言葉を機会へ伝えるプログラムです。

Linux環境でコマンドプロンプト画面を開いているとき、常にShellは起動している状態です。

Shellの起動状態

「Shell」とは、コマンドプロンプト画面から「カーネル」に対して命令をしたとき、カーネルが理解できる機械語に翻訳して伝達する役割を担っているインターフェイスのことです。

カーネルって?

カーネルとは、OSの核となる部分で、コンピュータを操作するうえでの最も基本的な処理、すなわち、CPUやメモリ、ディスクの制御などを行うプログラムを指しています。

カーネルはOSの中に位置しています。

例えば、Word(アプリケーション)で作成した文章をプリンター(ハードウェア)で印刷するとき、「カーネル」が間に入って「Word」を「印刷する」という要求を「プリンター」に伝えているということです。

コマンドプロンプト画面から「カーネル」に対してプリント出力を実行するまでの流れ

つまり、コマンドプロント画面から「Shell」を通して、人間の言葉を機械語に翻訳してから、各「H/W(ハードウエア)」へ命令しているのです。

代表的なシェルの種類

UNIX系OSで使用されているシェルには、「bash」だけでなく、「ksh」「tcsh」等、複数の種類のシェルが存在し、Bシェル系とCシェル系の2種類に分類できます。

ここで重要なのは、「B系シェルとC系シェルがあるんだな」くらいに思っておいていただければ問題ありません。

手っ取り早くお金が稼げるShellはズバリB系シェルです。

B系シェル

  • sh(Bourne Shell)
    shは(Bourne Shell)と呼ばれ、AT&Tベル研究所によって開発されました。ちなみにBの意味は開発者(Steven Bourne氏)の名前からとっています。「Shell」と言えば、このBshを指していると思ってよいでしょう。現在では、このBshを元にして、様々な派生シェルが登場しています。
  • bash(Bourne-Again Shell)
    bashは(Born again shell)と呼ばれ、Bshを元に機能を拡張した派生シェルの1つです。RedHat系のLinuxの標準シェルとして組み込まれています。急速なLinux普及を背景に、現在ではこの「bash」が標準シェルと思っている方も多く、また、Bshとも互換性を持つため、事実上のBshの後継シェルとも言われています。
  • ksh(Korn Shell)
    kshは(khon shell)と呼ばれ、bashと同様に、AT&Tベル研究所によって開発されました。ちなみにKの意味は開発者(David Korn氏)の名前からとっています。このKshもbash同様に、Bshを元に機能を拡張した派生シェルの1つです。KshはIBM社制サーバーOS「AIX (ver.4以降)」の標準シェルとして世界的に普及しました。

C系シェル

  • csh
    cshは、カリフォルニア大学バークレー校の大学院生によって開発されました。Bshを元にスクリプト構文をC言語のプログラミング風にアレンジしたシェルがcshです。最大の特徴はBshにはない「配列」を使用可能としたシェルとなります。
  • tcsh
    tcshは、Cshを元に、ユーザーインターフェイス部分を中心に拡張した派生シェルの1つです。tcshは、「FreeBSD(ver4以降)」の標準シェルとして世界的に普及しました。

上記以外にもシェルの種類はありますが、とりあえず上記のシェル名を覚えておけば問題ありません。

シェルスクリプトの違いとは?

「シェルスクリプト」とは、カーネルに対して処理をさせたい命令をまとめた「プログラム」ファイルのことです。「Shell」はシェルスクリプトの上から順番に処理していきますので、サーバー管理のような単純な作業をまとめておくと自動化することができます。

また、シェルスクリプトはプログラムを上から順番に実行するだけではなく、「条件分岐」や「繰り返し処理」を行うことが出来ます。これらの制御構文をスクリプト言語と言います。

つまり、Shell上で実行できるスクリプト言語のことを「シェルスクリプト」というわけです。

よく読まれている記事

1

Shellとは? Shellとは、人間の理解できる言葉を機会へ伝えるプログラムです。 Linux環境でコマンドプロンプト画面を開いているとき、常にShellは起動している状態です。 「Shell」とは ...

2

Linuxは主にサーバー用として利用されるOSです。大規模な基幹システムの開発者、ロボットや家電開発等の組み込み系エンジニア、ネットワーク機器やデータベースに携わるインフラエンジニアは触れることが多い ...

3

プログラミング言語を習得しようと思った時、必ずと言っていいほど候補として挙げられるのが「Java」というプログラミング言語です。 「Java」は、現在日本で最も使われている言語であり、非常に人気のある ...

4

この記事は、Linuxについて勉強している初心者の方向けに「Shellスクリプト」について解説します。最後まで読んで頂けましたら、Shellスクリプトはどのような役割を担っているのか?を理解出来るよう ...

-エンジニアの知識