シェルプログラミングTips

シェル sh

シェルスクリプトを組む場合に用いられることが多いシェルがshだ。名称は「sh」と呼ばれ、パスも「/bin/sh」が使われることが多い。しかし実際にはash、またはashから派生したdash、またはbashがshの実態として使われることが多い。

dashはashから派生したシェルなので、ここではashをshの実装とした場合を想定して説明する。shはPOSIXに準拠しており、POSIX以外に若干の拡張機能があるだけのシェルだ。ほかの高機能シェルと比べると提供している機能は少ない。しかし、実行速度が速く、シェルスクリプトとして利用するのに適している。

UNIX系のシステムは、ブートローダがカーネルをロードし初期のプロセスを起動したあとは、シェルスクリプトに処理が移行することが多い。シェルスクリプトからシステムを整えるための各種コマンドの実行やファイルシステムの準備、デーモンの起動などが実施される。

たとえばこれと同じ作業をすべてCのソースコードで記述できないこともないが、それでは変更が難しく実用的な開発は実現できない。シェルスクリプトはなんといっても変更が容易ですぐに書き換えることができる。システムに提供されている機能を活用するには都合が良い。最近ではこうしたシェルスクリプトの利点を考慮し、従来はCで開発されてきたプログラムをシェルスクリプトで実装し直す動きも見られる。

ユーザが利用するデフォルトシェルがbashになっているOSでは、shの実態がbashになっているケースがある。この場合、シェルスクリプトの処理はashほどは軽量にならない。こうした問題を避けるために、ユーザのデフォルトシェルをbashにしつつも、shとしてはashやdashを採用しているシステムもある。また依存するライブラリが少なく、バイナリサイズも小さく、どういったケースでも動作するため、rootユーザのシェルとしてshが利用されることも多い。

last modified: 2014-01-13 16:01:13