Dalam shell, execapakah 1) membuka file dan pengalihan 2) aktual exec(mengganti gambar proses saat ini dengan gambar proses lain).
Ini execadalah pengalihan.
Pertama, Anda mengarahkan ( exec 1> >(tee $LOGFILE)) stdoutdeskriptor (1) ke proses yang dihasilkan oleh pipa substitusi yang terhubung ke teeproses yang dijalankan bersamaan yang memiliki $LOGFILEargumen pertama dan kemudian Anda mengarahkan stderrdeskriptor (2) ke tempat yang sama dengan tempat deskriptor 1sekarang menunjuk (tee) pipa).
Ingatlah bahwa pewaris skrip dapat diwarisi, Anda baru saja membuat semua masa depan stdoutdan stderrhasilnya masuk ke teeproses, yang menulisnya ke $LOGFILEdan ke mana pun skrip yang diajukan awalnya (mungkin terminal Anda).
Catatan:
Proses tee menghasilkan keluaran stdout asli (= arsip asli 1) karena, seperti yang Anda dapat pelajari dari / mencari bash (1) untuk Pergantian Ekspansi Perintah Sederhana dan Pergantian Proses , subtitusi proses ( >() <()) terjadi (bersama dengan ekspansi lainnya) sebelum pengalihan dijalankan, yang berarti bahwa pengalihan di exec 1> >(tee "$LOGFILE")terjadi setelah tee telah dimulai, meninggalkan teedengan 1 pengesahan yang sama yang diwarisi dari shell induk. (Jika sebaliknya, teeakan dibuat untuk menulis ke input sendiri, yang mungkin membuatnya menemui jalan buntu, tergantung pada pola IO-nya).