シェルは幾つかのコマンドをコマンド群をまとめ、あたかも1つのコマンドのように
実行させることができ、これをコマンドのグルーピングと言います。
グルーピングを行なうにはまとめたいコマンド類を小括弧で囲んで (
) と
するか、あるいは中括弧を使って {
; } のようにします。
この2つはいずれもコマンドのグルーピングを行なう点は同じですが、(
) は
サブシェル(Page:
参照)で実行され、{
; } はカレントシェルで実行されます。
この違いを次の例で確認してください。
$ pwd
/usr/try
$ (cd /bin; ls -C)
$ pwd
/usr/try
$ { cd /bin; ls -C; }
$ pwd
/bin
(
) はサブシェルで実行されるために終了後のカレントディレクトリは
変わりません。一方、{
; } はカレントシェルで実行されますので終
了後のカレントディレクトリが変わってしまうのが確認できたと思います。
中括弧 {
; } を使ってグルーピングを1行に書くときに、
{ の直後と、 } の直前には1個のスペースが必要です。
さらに中括弧でグルーピングされたコマンドの末尾にはコマンドの区切りを
表すセミコロン ; がなければいけません。これは中括弧がシェルの予約語
であるための制限です。[「4.1 構文規則」(p.
) 参照]