Führt in Shells exec1) Dateiöffnungen und -umleitungen aus 2) das execAktualisieren (Ersetzen des aktuellen Prozessabbilds durch ein anderes Prozessabbild).
Dies execsind Weiterleitungen.
Zuerst leiten Sie ( exec 1> >(tee $LOGFILE)) den stdoutDeskriptor (1) zu einer durch Prozessersetzung generierten Pipe um, die mit einem gleichzeitig ausgeführten teeProzess verbunden ist $LOGFILE, dessen erstes Argument darin besteht, und dann leiten Sie den stderrDeskriptor (2) an dieselbe Stelle um, auf die der Deskriptor 1jetzt zeigt (das T-Stück) Rohr).
Unter Berücksichtigung der Tatsache, dass die Filedescriptors vererbt werden, haben Sie gerade die gesamte Zukunft stdoutund stderrAusgabe auf den teeProzess $LOGFILEumgestellt , der sie an die Stelle schreibt, auf die der Filedescriptor 1 ursprünglich verwiesen hat (wahrscheinlich Ihr Terminal).
Hinweis:
Der Tee-Prozess wird auf die ursprüngliche Standardausgabe (= der ursprüngliche Filedescriptor 1) ausgegeben, da, wie Sie aus / search bash (1) für die einfache Befehlserweiterung und Prozessersetzung lernen können , die Prozessersetzung ( >() <()) (zusammen mit anderen Erweiterungen) zuvor erfolgt Umleitungen erhält ausgeführt, was bedeutet , dass die Umleitung in exec 1> >(tee "$LOGFILE")geschieht , nachdem tee begonnen hat, so dass teemit dem gleichen FileDescriptor 1 , dass sie von der übergeordneten Shell geerbt. (Wenn es umgekehrt teewäre , würde es veranlasst, in seinen eigenen Eingang zu schreiben, was es abhängig von seinem E / A-Muster zum Deadlock machen könnte).