普通のプログラム言語では、1つのプロセス内で動くけど、
シェルスクリプトでは、コマンドを起動するなど、すべて別(子)プロセスが起動される。
1つのコマンドが、1つのプロセス

親プロセスから子プロセスへは、同じ変数が引き継がれるけど、逆は出来ない

パイプ、&(バックグラウンド)での実行、( コマンド )、ではサブシェルでの実行になる
(古いシェルでは、リダイレクションも)

{ コマンド } ならカレントシェルでの実行になる

sh ファイル名
ならサブシェルでの実行

. ファイル名、source ファイル名
ならカレントシェルに読み込む