En shells, exechace 1) aperturas y redirecciones de archivos 2) execing real (reemplazando la imagen de proceso actual con otra imagen de proceso).
Estas execson redirecciones.
Primero redirige ( exec 1> >(tee $LOGFILE)) el stdoutdescriptor (1) a una tubería generada por sustitución de proceso conectada a un teeproceso de ejecución simultánea que tiene $LOGFILEcomo primer argumento y luego redirige el stderrdescriptor (2) al mismo lugar donde 1apunta ahora el descriptor (el tee tubo).
Teniendo en cuenta que los descriptores de archivos se heredan, acaba de hacer que todo el futuro stdouty la stderrsalida se dirijan al teeproceso, que lo escribe en $LOGFILEy hacia donde el descriptor de archivos 1 señaló originalmente (probablemente su terminal).
Nota:
El proceso tee sale al stdout original (= el descriptor de archivo original 1) porque, como puede aprender de / buscando en bash (1) para Expansión de comando simple y sustitución de proceso, la sustitución de proceso ( >() <()) ocurre (junto con otras expansiones) antes las redirecciones se ejecutan, lo que significa que la redirección exec 1> >(tee "$LOGFILE")ocurre después de que tee ha comenzado, dejando teecon el mismo descriptor de archivo 1 que heredó del shell principal. (Si fuera al revés, teese haría que escribiera en su propia entrada, lo que podría hacer un punto muerto, dependiendo de su patrón IO).