【Linux】シェルってなに?!その内容から具体的な役割・機能まで徹底解説!

Linuxにおけるシェルとは、Linuxの核となるカーネルへ要求を伝達するプログラムです。そして、ユーザーとLinuxOSを繋ぐインターフェイスの役割を果たしています。今回は、Linuxを知る上で必ず理解しておかなければならない「シェル(shell)」について、その具体的な役割や機能を徹底解説します。

 

シェルってなに?!

 

Linuxを扱う技術者にとって、シェル(shell)は基本知識です。

逆に、シェル(shell)を理解することである程度自由にLinuxを使いこなすことができるようになります。

 

Linuxのカーネルとユーザーを繋ぐインターフェイス

 

 

シェルは、LinuxOSの核となるカーネルとユーザーを繋ぐインターフェイスといった関係性です。

Linuxのカーネルという心臓部は、LinuxOSを支える多数のプログラムによって構成されています。ユーザーはこれらプログラムの集合体に、必要な動きを要求することで、Linuxを”コンピューター“として利用しているのです。

ユーザーによる要求はまずシェルが受け取ります。シェルは受け取った要求を翻訳してカーネルに渡します。そしてカーネルは、シェルから受け取った翻訳済みの要求を実行するわけです。

シェルは、カーネルを包む「殻」のようなポジションであることから、英単語の「shell」、つまりシェルと呼ばれているのです。

 

シェルスクリプトは要求コマンドのかたまり

 

 

一般的に「シェルを使える」という技術は、「シェルスクリプトを書くことができる」という意味で使われます。

シェルに対するコマンドを理解し、一連の要求をコマンドで組み立てることができるということです。

そして、組み立てられたコマンドのひとかたまりを「シェルスクリプト」と言います。シェルスクリプトは一種のプログラミングです。

コマンドの羅列はもちろん、以下のような条件分岐やループ文など利用できます。

 

・if文

・for文

・while文

・case文

 

これらを駆使して、Linux運用におけるバッチ処理などを操るシェルスクリプトをプログラミングすることが可能なのです。

 

シェルスクリプトの種類

 

 

ユーザーがシェルへ送るコマンドのかたまりをシェルスクリプトと言いますが、シェルスクリプトにも以下を代表する様々な種類が存在します。

 

・sh:Bourne shell

・bash:Bourne-Again shell

・csh:C shell

・ksh:Koran shell

 

などです。

Linuxでは基本的に「sh」や「bashを利用する人が多いのではないでしょうか。

 

shBourne shellBシェル)

 

sh (Bourne shell/Bシェル)は、AT&Tベル研究所のスティーブン・ボーン氏が1977年に開発したシェルで、コマンド名を「sh」としています。

Bシェルとも呼ばれており、現在では標準的なシェルプログラムとして広く使用されているシェルです。

コンパイルを不要とし、シェルスクリプトには変数などが利用できるようになったものBシェル(Bourne shell)が初めてです。

それまでのシェルに比べるとプログラミング要素を多く取り入れており、シェルスクリプトを組みやすくなったシェルでもあります。

 

bashBourne-Again shell

 

bash(Bourne-Again shell)は、sh(Bourne shell/Bシェル)をベースに様々な機能が拡張されたシェルです。Linuxでもbashが多く使われています。

bashはもちろんsh(Bourne shell/Bシェル)と互換性がありますが、更に複雑なシェルスクリプトを組むことが可能です。

 

シェルの具体的な役割と機能

 

シェルの役割と機能のイメージは掴めたと思いますので、ここでは、より具体的な例を見ていきましょう。

 

シェルの役割と機能の具体的な動き

 

 

シェルの役割は、ユーザーの要求をカーネルに伝えることでした。ユーザーは基本的に、ターミナルからLinuxに接続し、コマンドを入力することでLinuxを操作します。

ターミナルとは、CUIコマンドを受け付けるための画面で、イメージとしては“ハッカーが使う黒い画面”ですね。

例えば、今現在ユーザーが見ているディレクトリである「カレントディレクトリ」を確認する要求を、具体的な動作と順番で整理すると次のようになります。

 

1.ユーザーがPC上でターミナルを開く

2.ターミナル上で「pwd」コマンドを入力

3.エンターキーで決定

4.「pwd」コマンドがシェルに渡される

5.シェルが「pwd」コマンドの意味を「カレントディレクトリの表示要求」と解釈する

6.シェルは「カレントディレクトリの表示要求」をカーネルに伝える

7.カーネルは「カレントディレクトリ」をシェルに伝える

8.カーネルから教えてもらった「カレントディレクトリ」をシェルがターミナルに表示する

9.ユーザーはターミナルに表示されたカレントディレクトリを確認する

 

一つの要求コマンドでは、簡単にイメージするだけでもこれだけの動作が行われており、その中でもシェルは、ユーザーとカーネルの間で重要な役割を果たしているのが分かりますね。

 

Geekly Media ライター

佐久森

11+

【徹底比較!】Linux vs Windows!結局なにが違うの?それぞれのメリット・デメリットまで徹底解説!

「PCが使えるか否か」という質問をよく耳にすると思います。これは一般的には「Windowsを操作できるか否か」という意味です。しかしIT技術者を目指す場合、Windowsだけにとどまらず「Linux」も視野に入れる必要があります。そこで今回は、LinuxとWindowsの違いを理解した上で、それぞれのメリットとデメリットを紹介します。

 

LinuxとWindowsの違い

 

私たちがPCを使う場合、起動したPCの画面上でマウスを操作して、目的のソフトウェアを立ち上げますよね。PCはユーザーの操作によって機械語を受け取って理解し、電気信号という形で命令を実行します。

人間がPCに対して機械語で命令することは非常に困難ですが、OSOperating System)を挟むことによりPC操作が容易になったのです。

現在企業に導入されている主流なOSは、Microsoft社が開発したWindowsです。しかし、IT技術者にとってはもう一つ重要なOSがあります。それがLinuxです。

LinuxWindowsの大きな違いはオープンソースであるか否かです。

 

・Linux:オープンソース(無料)

・Windows:製品(有料)

 

また、ITサービスを提供するサーバのほとんどがLinuxを利用しているのは、無料のオープンソースであることと、もう一つ理由があります。

それは、製品であるWindowsサーバよりもLinuxが遥かに高い自由度を持っているからです。

 

Linuxの概要を把握する

 

 

Linuxは主に、ITサービスのサーバを稼働させるのOSとして利用されています。

Linuxの操作は、主にCUI上でのコマンド入力です。ハッカーなどのイメージで、黒い画面に英語のコマンドを素早く入力している姿がよく使われますね。

CUIの画面はそれと同じようなイメージです。もちろん、WindowsのようなGUIもあるのですが、コマンド操作に慣れてしまうとマウスを使うよりも速く命令を入力することができるのです。

Linuxは様々なサーバ(Webサーバやファイルサーバなど)をインストールしたり、ひとつひとつの利用目的に対しての細かなカスタマイズもできるため、ITサービスを支えるシステムとして重要な役割を担っているのです。

 

Windowsの概要を把握する

 

 

WindowsMicrosoft社が開発した有料のOSです。一般的にPCと言えば、Windowsをイメージしますね。また、社内のコンピューター機器を管理するために導入するWindows Serverという製品も存在します。

Windowsは基本的にGUIで操作するため、視覚的にも直感的な利用が可能です。そしてこれこそが、企業や一般家庭にWindowsPCが普及した要因でもあるのです。

最近は、企業でも導入されているAppleのOS XもGUIですが、OSの元となるのはUNIXです。※UNIXとLinuxは異なるOSです。

 

Linuxのメリットとデメリット

 

それでは、Linuxのメリットとデメリットを見ていきましょう。

 

Linuxのメリット

 

 

Linuxには以下のようなメリットがあります。

 

・オープンソースなのでコストがかからない

・使わなくなったPCを利用できる

・インターネット上の情報が豊富

 

Linuxがサーバに導入される理由の一つが、オープンソースであることです。PCやサーバにライセンス無しでインストールできるので、コストを最小限にまで抑えることが可能なのです。

もちろん、高価なサーバ機器以外にもインストールすることができますので、例えば使わなくなったPCにLinuxをインストールすれば、簡単なファイルサーバとして利用できます。

また、Linuxについては豊富な情報がインターネット上に存在します。それは、基礎となる知識から、業務に最低限必要な情報に至るまで賄えるほどです。

Linuxについては、中古のPCとインターネットがあれば独学でもある程度の勉強ができるということですね。

 

Linuxのデメリット

 

 

Linuxには以下のようなデメリットがあります。

 

・サポートが無い

・周辺機器が使いにくい

・業務で利用するMicrosoft Officeなどは使えない

 

Linuxは無料で利用できるオープンソースですが、サポートはありません。分からないことやトラブルが発生した場合には、自分で調べる必要があります

また、家電量販店で販売しているPC周辺機器についても、スムーズに動作しない場合も多く、USBメモリなどのストレージ機器については、Linux用のフォーマットへ変更しなければ読み取れないという事態も発生します。

多くの企業が利用するMicrosoft Officeや、Windows専用のソフトウェアを利用できないといった点もデメリットと言えますね。

 

Windowsのメリットとデメリット

 

それでは、Windowsのメリットとデメリットも見ていきましょう。

 

Windowsのメリット

 

 

Windowsには以下のようなメリットがあります。

 

・メーカーの公式なサポートを受けられる

・多くの企業が導入しているので汎用性がある

・周辺機器が利用しやすい

 

Windows OSの提供は有料で、製品でもありますので公式のサポートを受けることができます。これは、業務で利用する機器には欠かせないメリットですね。

また、多くの企業が標準でWindowsPCを利用しているため、WindowsのGUIをひと通り操作できるスキルには汎用性があると言えます。

家電量販店ではWindowsOSを想定して製造された周辺機器がほとんどですので、特に手を加えることなく製品を利用することができるのは大きなメリットです。

 

Geekly Media ライター

佐久森

3+