>>130
あ、そうですか。何度もすいみません。

func() { echo $1 : $$; }
export -f func

echo parent : $$ &
/bin/bash -c 'func child1' &
/bin/bash -c 'func child2'

こう、バックグラウンドジョブにしてやったら
期待どおりに、$$ が呼ばれたの直上のシェルの PID になるんですよね。
やっぱりサブシェルだからダメなのかなあ…