シェルでexecは、1)ファイルのオープンとリダイレクト2)実際のexecing(現在のプロセスイメージを別のプロセスイメージに置き換える)を行います。
これらexecはリダイレクトです。
最初にexec 1> >(tee $LOGFILE)、stdout記述子(1)を、最初の引数として同時に実行さteeれるプロセスに接続されたプロセス置換生成パイプに$LOGFILEリダイレクトstderr()してから、記述子(2)が記述子が1指す場所と同じ場所(ティー)にリダイレクトしますパイプ)。
ファイル記述子が継承されることを念頭に置いて、あなたはすべての将来stdoutを作成し、stderr出力はteeプロセスに$LOGFILE送られ、ファイル記述子1が元々(おそらくあなたの端末)を指していた場所に書き込みます。
注:
teeプロセスは、元のstdout(=元のファイル記述子1)に出力します。これは、/ searching bash(1)から学習できるように、単純なコマンド拡張とプロセス置換のために、プロセス置換(>() <())が(他の拡張とともに)発生する前にリダイレクトが実行されます、でリダイレクトがいることをどの手段exec 1> >(tee "$LOGFILE")が起こる後は tee残して、開始されたteeことは、親シェルから継承されたのと同じファイル記述子1で。(逆の場合tee、独自の入力に書き込むようになり、IOパターンに応じてデッドロックになる可能性があります)。