5.1.6. シェルスクリプト/Shell scripts

本ページはシェルスクリプトを実際に書く必要が生じるまでは読まなくて良い。

シェルに実行させるプログラムをファイルとして保存したものがシェルスクリプトである。

UNIXでは、シェルに限らずスクリプトファイルが多用され、OSがスクリプトファイルの 実行をしやすくする機能を提供している。スクリプトファイルには必ずインタープリタ が必要で、シェルスクリプトならばインタープリタとしてシェルが、perlスクリプトならば perlが、pythonスクリプトならばpythonが、必要である。

UNIXでは、スクリプトの先頭行でインタープリタコマンドのパス名を指定することが できる。OSは、この情報に基づいて、指定されたインタープリタコマンドを実行して、 スクリプトファイルを処理させる。

shellスクリプトの先頭行の例:

#!/usr/bin/sh

pythonスクリプトの先頭行の例:

#!/usr/bin/python3

Windowsや、その前身のMS-DOSでは、ファイルの実行方法はファイルの拡張子で指定して いたが、UNIXではプログラムの実行時に、拡張子は特別な意味を持たない。 その代わりにUNIXにおいてはファイルの「実行許可」が意味を持つ。 シェルスクリプトファイルをエディタで作ったら、次のようにして実行許可をファイルに 与える。:

chmod +x my_script_file

シェルを通じてユーザがこのファイルの実行をOSに命じると、OSはまず実行権限ビットが 与えられていることを確認する。次にファイルの先頭数バイト(ファイルのヘッダー:header) を調べ、ファイル形式を確認する。

コンパイルされたバイナリファイルを意味するヘッダーであれば、そのファイルの中身を メモリに読み込んで実行する。

一方で、ヘッダーが「#!」であれば、スクリプトファイルであると判断して、「#!」 の次に記載されたパス名のプログラム(インタープリタプログラム)を起動して、 そのプログラムの引数として、このファイルのパス名を渡す。あとは、インタープリタ プログラムがファイルの内容を読んで実行する。