MogLog

メモというか日記というか備忘録というか

『入門UNIXシェルプログラミング シェルの基礎から学ぶUNIXの世界』:各種シェルの特徴について

・Bourne Shell(sh)
「シェル」という場合にはなにも注釈がない場合、普通「Bourne Shell」のことを指す。
ベル研究所のStephen R. Bourneという人が開発したので、Bourne Shellと呼ばれる(省略してBシェルとも)。
スクリプトを書くのに優れているし、どのUNIXシステム上でも確実に存在するため必然的にスクリプトの汎用性が高くなる。
一方で、対話的に利用するための機能が乏しい。

・C Shell(csh
Bシェルにかけていた対話的な処理も充分に行えるようにと作られたシェル。
記述法がC言語ライクなため、このように呼ばれている。
対話機能としては非常に優れているが、スクリプト書く上での欠陥があった。
Bourne Shellはスクリプトに、C Shellは対話的にという、標準とも言える流れを作ったのは事実。

Korn
David Kornが開発したシェルであるため、このように呼ばれている。
Bourne Shellと同じ記述法にしながらも、対話的に有用になるような機能を追加した。
つまり、BシェルとCシェルのいいとこどりをしたもの。
System V系のものでは標準組込みのシェルにもなり、POSIXシステムのシェルの基礎ともなった。
しかし、汎用性の面から見て、Bourne Shellを超えることはできないまま。

POSIX
Korn Shellを基礎にして開発されたため、Korn Shellに非常によく似ている。

bash
Bourne Again SHellと銘打って、Free Software Foundationが開発したシェル。
POSIXシェルと互換性をもたせ、さらに幾つかの機能を追加した。
Linuxでは標準のシェルとしてこのbashが組み込まれている(自分が現時点で一番慣れ親しんでいるのはこれ)。

tcsh
C Shellを改良したシェル。C Shellの欠点を修正し、Korn Shellからも機能の流用をしている。
しかし、C Shellの欠点を全て解決することは出来なかったよう。
あまり広く使われているとはいえないらしい。

zsh
Korn Shellをベースにした様々な機能が追加拡張されている。
cshtcshの利用者たちはどうしてもBourn Shell系の対話処理に馴染めないが、そんな人達にでも扱いやすいよう配慮した設計になっている。