シェルプログラミングTips

OSを活用するインターフェース シェル

UNIX系のオペレーティングシステムでは、システムを操作する基本的な方法としてシェルが提供されている。シェルにはさまざまな実装系が存在する。もっとも基本となるのはshだ。shの実態はashであったりdashであったりbashであったりとシステムごとに異なる。しかし、提供されている基本的な機能はどれも共通している。

シェルは通常2つの側面を備えている。ひとつは人間が対話的に操作するためのインタラクティブシェルとしての側面、もうひとつはコマンドを組み合わせて自動で処理を実行するためのシェルスクリプトとしての側面だ。インタラクティブシェルとしてはzshやbash、tcsh、kshなどが使われることが多い。シェルスクリプトとしてはshが使われる傾向がある。

シェルが提供する機能はUNIXカーネルが提供する機能とダイレクトに結びついている。コマンドを実行する操作は、プロセスをフォークして対象となるプログラムを読み込み実行させる処理にほかならない。リダイレクトはファイルディスクリプタの操作そのものだし、シェルが提供している機能はカーネルが提供している機能そのものだ。

シェルを利用する場合、マニュアルやティップス集などに掲載されている便利な機能に目が行きがちだが、実のところカーネルの仕組みを調べ、シェルがどのように動作するのかを知っておくことの方が、システムを操作するという面においては重要になってくる。カーネルの内部構造がわかれば、無駄な操作をすることもなくなるし、効率の悪いスクリプトを書くことも避けることができるようになる。シェルを使いこなすということは、カーネルを知ることとも言える。

企業ユースでは、シェルはサーバにログインして操作するための手段としての位置づけが強い。OSの操作にシェルが使われるのは当然だが、実はシェルを業務データの処理に活用している例もある。OSの操作やOSを組み上げるためのシェルではなく、基幹システムを支えるためのシェルだ。

シェルが提供する機能はカーネルの機能にダイレクトに対応しており、またその操作や使い勝手もアジャイルで高速といえる。動作もシンプルでわかりやすく、適切な設計と実装のもとで高い性能を発揮する基幹システムとしても活用できる。システムを操作する基本的なプログラムであり、そしてもっともシステムの性能を発揮させやすいプログラム、それがシェルだ。

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