「インストールしてみたけど,使い方が分からず途方に暮れた」「本を読んだけど,難しくて理解できなかった」「操作手順だけでなく,基本的な仕組みを知りたい」...。こうした意見にこたえるため,“Linuxの基本”を説明するコラムが復活しました。実際にLinuxを操作しながら,基本操作と仕組みに関する知識を身に付けましょう。

 ユーザーがキーボードからコマンドライン*に入力したコマンドを解釈してその実行を制御するプログラムを,コマンド・インタプリタと言います。LinuxなどUNIX系OSで使われるコマンド・インタプリタ*1が,今回説明するシェルです。

 実はこれまでにも,シェルを用いた操作をこの記事で取り上げていました。GUI*操作に限定した場合にはシェルは使われませんが,X Window Systemを利用しているときでも,端末エミュレータのウインドウ内ではシェルを利用しています。また,CUI*での操作では,シェルは不可欠です。


図1 シェルの動作例
コマンド名が正しければ,シェル内部で処理したり,外部プログラムに処理を依頼したりします。この例では,「/bin/ls」コマンドに処理させてその結果を表示しています

[画像のクリックで拡大表示]

図2 ユーザーが入力したコマンドの解釈と実行を対話的に行う
正しくないコマンドの場合はそのようにユーザーに告げます。正しいコマンドの場合は,シェル自身が処理したり,コマンドを処理するプログラムを起動したりします。

[画像のクリックで拡大表示]

図3 シンボリック・リンクであることを確認
[画像のクリックで拡大表示]

 シェルの役割は,次のようになります。ユーザーが入力したコマンドを解釈して,正しいコマンドであればそれを実行します。正しくないコマンドの場合はそのようにユーザーに告げます(図1[拡大表示])。正しいコマンドの場合は,シェル自身が処理したり,コマンドを処理するプログラムを起動したりします(図2[拡大表示])。

 また,シェルには,ユーザーが入力したコマンドの解釈と実行を対話的に行うモードのほかに,シェル・スクリプトと呼ばれるプログラムを非対話的に*2解釈して実行するモードがあります。シェル・スクリプトについては,次回に解説します。

シェルの種類

 伝統あるプログラムだけにシェルの種類はさまざまですが,Bourneシェル*(Bシェル)とCシェル*(コマンド名は「csh」)に大別できます。ベル研究所*が配布したUNIX*の標準シェルがBシェル,BSD UNIX*の標準シェルがCシェルだったこともあって,両シェルは併存したまま現在に至っています。

 Fedora Core 3およびVine Linux 3.1では,Bシェルの機能を拡張したbash(Bourne Again Shell)がデフォルト*のシェルになっています。コマンド名shは,bashへのシンボリック・リンクです。また,Cシェルの機能拡張版がtcshで,Fedora Core 3およびVine Linux 3.1ではコマンド名cshはtcshへのシンボリック・リンクです(図3[拡大表示])。

 ここでは,Fedora Core 3およびVine Linux 3.1などのLinuxディストリビューションでデフォルトのシェルとして採用されているbashを主に取り上げます。