人間の仕事をシェルに代行させるための手順を書いたテキストファイルのことを シェルスクリプトといます。シエルスクリプトに記述できる内容はコマンドライン で受け付けられるものならば何でも書くことができます。 シェルにはパイプに代表されるような複数のコマンドを組み合せる機能や、 あるコマンドの実行結果を見てそれを次のコマンドに引用するためのロジック が組み込まれています。
シェルスクリプトは純粋なテキストファイルですからテキスト エディタで書き起こしたり、修正することができます。そして、そのスクリプトを 実行させるには端末からのシェルへの入力を代行させる意味で
$ sh <
script
とシェルの標準入力に流し込む方法が使えます。
また、シェルは引数があるとそれを入力ファイルとして扱いますから
$ sh scriptとしても構いません。しかし、このようにスクリプトを起動する度にシェルの 引数とするのは面倒ですから、スクリプトに「実行権」を与えて使います。 「実行権」とはminixのファイルシステムに用意されている許可属性の1つで、 この権利が与えられているファイルはコマンドとして直接起動することができます。
テキストファイルとして書かれたスクリプトに実行権を与えるにはchmodコマンドを 使用して、
$ chmod +x
script
とします。このあとはスクリプトを修正してもファイルの実行権が失われることは
ありません。
このようにしてコマンドラインからシェルスクリプトを起動すると、 カレントシェルは子プロセスとして もう一つシェルを走らせ、そこでシェルスクリプトを実行します。 この実際にスクリプトを実行するために走るシェルを サブシェル といいます。 子プロセスのサブシェルは親プロセス(カレントシェル)の環境を受け継ぐこと はできますが、その逆はできません。例えば、実行属性を与えたシェルスクリプト を使って環境変数を再設定しようとしても、再設定されるのはサブシェル側の環境変数 であってカレントシェルのものではありません。
現在の環境変数を再設定するにはスクリプトをカレントシェルで実行しなければなりません。 このためシェルにはドットコマンドと呼ばれるものが用意されおり、コマンドライン でドット .の後にスペースを置いて実行したいスクリプト名を書きます。
$ . scriptドット .を先頭に置くことによりカレントシェルは scriptを自分自身で 実行しますので、現在の環境変数を再設定することができます。 なお、ドット .に続く scriptには実行権の必要はありません。