『[改訂第3版]シェルスクリプト基本リファレンス ──#!/bin/shで、ここまでできる』
(2017年1月、技術評論社)前付けより転載
シェルスクリプトの移植性に着目し、各種シェルの文法の違いを洗い出す目的で書き始めたのが本書でした。それは各種シェルの違いについての純粋な興味でもあり、またLinux上のbashで動作するシェルスクリプトがFreeBSDのshやSolarisのshでは動かない場合の解決策のヒントを探るためでもありました。
たとえば、シェル変数iの値に3を加算してその値をシェル変数jに代入するといった例では、bashなら((j = i + 3))と記述できますが、FreeBSDのshではj=$((i + 3))のような記述にする必要があり、さらにSolarisのshではj=`expr $i + 3`という外部コマンドを利用した原始的な記述を用いる必要があります。
もっとも、現在ではWindows 10やmacOSも含めてbashが普通に動く環境が増え、シェルスクリプトはbashで動きさえすれば良く、シェルスクリプトの移植性を考える必要性は薄れてきたとも考えられます。
しかし、このような状況の中でもなお移植性を意識することが有意義であると筆者は考えています。bashにはたくさんの便利な文法や組み込みコマンドが存在しますが、これらをすべて同列に考えるのではなく、これらが従来のshでもずっと使われてきた文法やコマンドなのか、比較的最近にbashで追加されたものなのかを知った上で使うようにした方が、シェルスクリプトに対する理解がより深まると信じるからです。
本書は、Linux(bash)、FreeBSD(sh)、Solaris(sh)の動作対応状況をアイコン表示することを特徴の一つとしてきましたが、今回の改訂ではさらにBusyBoxのshを追加して計4つのアイコン表示を行っています。これら4つのアイコンがすべて○で表示されている文法やコマンドが、最も移植性の高い重要項目となります。
本書を、日々のシェルスクリプト記述の参考にしていただければ幸いです。
2016年12月 山森丈範