一般的なLinuxでは、デフォルトでbashが使用されている。しかし、実行の際に使用するメモリ容量が少なく、かつ実行が高速なKornシェルが明日のあなたのデフォルトシェルになるかもしれない。
Linuxのシェルについてはおそらくご存じのことだろう――LinuxでKonsoleやxtermなどの端末ウインドウを開いてコマンドを入力するとき、文字を受け付けているのが他でもないLinuxのシェルだ。あるいはファイルにコマンドを書き込んで、実行可能にして、実行するということをしているのなら、あなたはもう立派なシェルプログラマーだといえるだろう。しかし利用可能なシェルにはさまざまなものがあって、それぞれに少しずつ違った特徴があるということはご存じだろうか。そのようなシェルの中で個人的にわたしが気に入っているのがKornシェルだ――この記事を読み終わるころには、あなたのお気に入りにもなっているかもしれない。
一般的なLinuxでは、デフォルトでbash(Bourne again shell)が使用されている。そのbashからKornシェルに移行する前に、Kornシェルのメリットを整理しておこう。まず、Kornシェルのバイナリはbashのバイナリよりも小さい上、多くの関数(echoやgetoptsなど)が個別の実行ファイルではなくシェルの中に組み込まれている。言い換えれば、Kornシェルでは実行の際に使用するメモリ容量が少なくて済むのに加えて、実行が高速になることもあるということだ。
さらに言えば、Kornシェルはbashとの完全な後方互換性を保っている。つまりKornシェルに移行した場合、Kornシェル独自の機能をまったく使わなかったとしても、すでに知っているコマンドをすべて利用し続けることが可能だということだ。またKornシェルには組み込みの算術式、複合変数、ディシプリン関数、コプロセスなどといった便利な機能がある。本稿中盤以降では、これらの各機能を紹介する。
ところで、Kornシェルにそれほどの利点があるのであれば、なぜLinuxではデフォルトでKornシェルではなくbashが使用されているのか不思議に思うかもしれない。その理由は極めて単純で、単にそれまでそうなっていたからという理由だけだ。UNIXのデフォルトのシェルはsh (Bourne shell)だったので、Linuxのデフォルトのシェルがbash(Bourne again shell)になったのは自然なことだった。当然ながらここでデフォルトと呼んでいるのは、実際には/etc/passwdの各ユーザーの当該項目のことを指しているにすぎない。つまり例えば/etc/passwdの中の項目が以下のようになっている場合には、このユーザーのデフォルトのシェルはbashだ。
bainm:x:1000:100:Mark Alexander Bain:/home/bainm:/bin/bash
また、以下のようになっている場合には、このユーザーのデフォルトのシェルはksh(Korn shell)だ。
bainm:x:1000:100:Mark Alexander Bain:/home/bainm:/bin/ksh
なお現在使用しているシェルは、システムの環境を問い合わせることによっても確認できる。
> env | grep SHELL
SHELL=/bin/bash
シェルをKornシェルに変更する前にKornシェルがシステムに実際にインストールされていることを確認しておいた方がよいかもしれない。そのための最も簡単な方法は、次のようにして実行ファイルを確認することだ。
> ls -l /bin/bash /bin/ksh
ls: /bin/ksh: No such file or directory
-rwxr-xr-x 1 root root 677184 2006-12-11 21:20 /bin/bash
Kornシェルの実行ファイルがない場合には、手元のディストリビューションのパッケージ管理ツールを利用して入手できる。例えばSUSEの場合にはYastを利用し、Debianの場合には「apt-get install ksh」を実行すればよいだろう。インストール後は、コマンドラインで「/bin/ksh」を実行すればKornシェルに移ることができる。また「exit」を実行すればKornシェルを終了してbashに戻ることができる。/etc/passwdの中の情報を変更すればKornシェルをデフォルトにできるが、その際には手元のディストリビューションのユーザー管理用ソフトウェアを利用するのがおそらく安全だろう。とはいえKornシェルを使用するにはシェルとして使用するという手以外にもスクリプトに使用するという手もある。そのためにはファイルの先頭に次のような一行を追加すればよい。
#!/bin/ksh
それではKornシェルを使い始めることで新たに得られる機能を紹介しよう。まずは、Kornシェルの組み込み算術式について述べる。
Copyright © 2010 OSDN Corporation, All Rights Reserved.