Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ exec(1) — Reliant UNIX 5.44c4

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

ksh(1)

sh(1)

exec(2)

exec(1)                                                             exec(1)

NAME
     exec - Die aktuelle Shell überlagern (execute)

SYNTAX
     exec programm [umlenkung]                                     Format 1

     exec umlenkung                                                Format 2

BESCHREIBUNG
     Das in die Shell sh(1) bzw. ksh(1) eingebaute Kommando exec hat zwei
     Funktionen:

     -  exec überlagert die aktuelle Shell durch ein anderes Programm (For-
        mat 1). Die aktuelle Shell ist beendet, wenn dieses Programm
        gestartet wird. Es entsteht kein neuer Prozeß; das erkennen Sie
        daran, daß sich die Prozeßnummer nicht ändert (siehe Beispiel 2).

        Wenn Sie exec im Dialog eingeben, ist nach der Ausführung des ange-
        gebenen Programms die übergeordnete Shell aktiv bzw. Ihre Sitzung
        beendet.

        Steht exec in einer Shell-Prozedur, so wird diese Prozedur beendet.
        Kommandos, die in der Prozedur nach dem Aufruf von exec stehen,
        werden nie ausgeführt.

     -  exec lenkt die Standardeingabe bzw. die Standardausgabe der Shell
        um auf eine Datei (Format 2). Nach der Ausführung von exec lesen
        alle eingegebenen Kommandos aus dieser Datei bzw. schreiben in
        diese Datei, bis die aktuelle Shell beendet ist.

     In der Korn-Shell ksh existieren zusätzliche Umlenkmöglichkeiten
     (siehe ksh(1)].

   Format 1: Die Shell durch ein anderes Programm überlagern

     exec programm [umlenkung]

     programm
          Beliebiges Kommando, Programm oder Shell-Prozedur, aber kein ein-
          gebautes Shell-Kommando. Für die dazugehörige Datei brauchen Sie
          Ausführrecht.

          Die aktuelle Shell beendet sich; statt dessen wird programm aus-
          geführt. Wenn programm ausgeführt ist, meldet sich die übergeord-
          nete Shell zurück oder der Begrüßungsbildschirm wird ausgegeben.

     umlenkung
          Weist dem angegebenen Programm, falls es von der Standardeingabe
          liest bzw. auf die Standardausgabe schreibt, eine Datei für die
          Eingabe bzw. Ausgabe zu.





Seite 1                      Reliant UNIX 5.44               Gedruckt 11/98

exec(1)                                                             exec(1)

          Folgende Angaben für umlenkung sind möglich:

          >datei   Die Standardausgabe des angegebenen Programms wird auf
                   datei umgelenkt. In datei enthaltene Daten werden vorher
                   gelöscht.

          >>datei  Die Standardausgabe des angegebenen Programms wird auf
                   datei umgelenkt. In datei enthaltene Daten werden nicht
                   gelöscht; die Ausgaben des Programms werden an den bis-
                   herigen Inhalt von datei angehängt.

          2>datei  Die Standardfehlerausgabe des angegebenen Programms wird
                   auf datei umgelenkt.

          <datei   Die Standardeingabe des angegebenen Programms wird auf
                   datei umgelenkt. Das Programm liest also seine Eingabe
                   aus dieser Datei.

   Format 2: Standardeingabe bzw. -ausgabe der Shell umlenken

     exec umlenkung

     umlenkung
          Weist Kommandos, die von der Standardeingabe lesen bzw. auf die
          Standardausgabe schreiben, eine Datei für die Eingabe bzw. Aus-
          gabe zu. Diese Umlenkung gilt für alle Kommandos, die die aktu-
          elle Shell nach exec ausführt.

          Folgende Angaben für umlenkung sind möglich:

          >datei   Alle Kommandos, die die aktuelle Shell ausführt, schrei-
                   ben ihre Ausgabe nacheinander in die angegebene Datei.
                   In datei enthaltene Daten werden gelöscht. So werden
                   alle Ausgaben gesammelt.

                   Wenn Sie exec im Dialog eingeben, können Sie die Umlen-
                   kung nur rückgängig machen:

                   -  mit CTRL-D. Damit beenden Sie die aktuelle Shell.

                   -  mit der Eingabe exec >/dev/tty. Damit lenken Sie die
                      Standardausgabe wieder auf den Bildschirm um.

                   Steht exec in einer Shell-Prozedur, so gilt die Umlen-
                   kung nur für die Kommandos, die in der Prozedur auf den
                   Aufruf von exec folgen. Wollen Sie die Umlenkung inner-
                   halb der Prozedur rückgängig machen, müssen Sie in der
                   Prozedur an der betreffenden Stelle das Kommando exec
                   >/dev/tty einfügen. Damit lenken Sie die Standardausgabe
                   der nachfolgenden Kommandos wieder auf den Bildschirm
                   um.



Seite 2                      Reliant UNIX 5.44               Gedruckt 11/98

exec(1)                                                             exec(1)

          >>datei  Alle Kommandos, die die aktuelle Shell ausführt, schrei-
                   ben ihre Ausgabe nacheinander in die angegebene Datei.
                   In datei enthaltene Daten werden nicht gelöscht; die
                   Ausgaben der Kommandos werden an den bisherigen Inhalt
                   von datei angehängt.

          2>datei  Die Standardfehlerausgabe wird für alle Kommandos, die
                   die aktuelle Shell ausführt, auf datei umgelenkt.

          <datei   Wenn Sie exec im Dialog eingeben, liest die aktuelle
                   Shell die Kommandos, die sie ausführen soll, aus der
                   angegebenen Datei. Nach dem letzten Kommando beendet
                   sich die Shell.

                   Steht dieses Kommando in einer Shell-Prozedur, so lesen
                   alle Kommandos, die in der Prozedur auf den Aufruf von
                   exec folgen, ihre Eingabe aus der angegebenen Datei.
                   Jeder Lesevorgang verändert die Position des Lesezeigers
                   in dieser Datei. Wenn der Lesezeiger auf Dateiende (EOF)
                   steht, erhalten alle noch folgenden Kommandos keine Ein-
                   gabe.

                   Mit dem Kommando exec </dev/tty lenken Sie die Standard-
                   eingabe für die nachfolgenden Kommandos wieder auf die
                   Tastatur um.

                   datei  Wenn Sie exec im Dialog eingeben, muß das der
                          Name einer Shell-Prozedur sein. Für diese Shell-
                          Prozedur brauchen Sie nur Leserecht.

                          Wenn exec in einer Shell-Prozedur steht, ist das
                          der Name der Datei, aus der die nachfolgenden
                          Kommandos ihre Eingabe lesen sollen.

INTERNATIONALE UMGEBUNG
     Die Umgebungsvariable LCMESSAGES bestimmt die Sprache der Meldungs-
     texte. Wenn LCMESSAGES nicht oder als leere Zeichenkette definiert
     ist, wird der Wert von LANG als Standardwert herangezogen. Ist auch
     LANG nicht oder als leere Zeichenkette definiert, verhält sich das
     System so, als wäre es nicht internationalisiert.

     Die Umgebungsvariable LCALL bestimmt die gesamte internationale Umge-
     bung. LCALL hat Vorrang vor allen anderen Umgebungsvariablen im
     Bereich der Internationalisierung.

BEISPIELE
     Beispiel 1

     Was passiert bei folgender Eingabe:

     $ exec date



Seite 3                      Reliant UNIX 5.44               Gedruckt 11/98

exec(1)                                                             exec(1)

     Das Kommando exec beendet zuerst die aktuelle Shell und führt dann das
     Kommando date aus. Am Bildschirm wird das aktuelle Datum mit Uhrzeit
     ausgegeben.

     Wenn Sie das Kommando in Ihrer Login-Shell eingegeben haben, wird
     anschließend der Begrüßungsbildschirm ausgegeben. Sie müssen sich neu
     am System anmelden.

     Wenn Sie das Kommando in einer Subshell eingegeben haben, meldet sich
     die übergeordnete Shell zurück.

     Beispiel 2

     Wenn Sie die aktuelle Shell durch ein anderes Programm überlagern,
     ändert sich die Prozeßnummer nicht. Das soll mit den folgenden Dateien
     gezeigt werden:

     -  Die Datei proz1 hat folgenden Inhalt:

        echo proz1 hat Prozessnummer: $$
        sh proz2

     -  Die Datei proz2 hat folgenden Inhalt:

        echo proz2 hat Prozessnummer: $$
        exec proz3

     -  Die Datei proz3 - sie muß ausführbar sein - hat folgenden Inhalt:

        echo proz3 hat Prozessnummer: $$

     Die Shell-Prozedur proz1 wird gestartet:

     $ sh proz1
     proz1 hat Prozessnummer: 2755
     proz2 hat Prozessnummer: 2760
     proz3 hat Prozessnummer: 2760

     Weil proz3 von proz2 mit exec aufgerufen wird, laufen beide Shell-
     Prozeduren unter derselben Prozeßnummer. Genauer: Die Shell, die die
     Shell-Prozedur proz2 ausführt, wird überlagert von der Shell, die
     proz3 ausführt.

     Beispiel 3

     Mit dem Kommando exec wird in der Shell-Prozedur exctest die Standard-
     eingabe für die nachfolgenden Kommandos umgelenkt auf die Datei
     /etc/group. Die Datei exctest hat folgenden Inhalt:

     : Aufruf mit sh exctest
     exec </etc/group
     read zeile


Seite 4                      Reliant UNIX 5.44               Gedruckt 11/98

exec(1)                                                             exec(1)

     echo $zeile
     echo
     cat

     Die Shell-Prozedur exctest wird gestartet:

     $ sh exctest
     root::0:root

     daemon::1:daemon
     sys::2:sys:
     bin::3:bin,admin
     uucp::4:
     .
     .
     .

     Das eingebaute Shell-Kommando read weist der Variablen zeile die erste
     Zeile der Datei /etc/group zu. Das Kommando echo $zeile gibt den
     Inhalt dieser Variablen aus.

     Das Kommando cat liest seine Eingabe ebenfalls aus der Datei
     /etc/group. Da der Lesezeiger jetzt auf der zweiten Zeile dieser Datei
     steht, gibt cat den Inhalt erst ab Zeile zwei aus.

     Anschließend steht der Lesezeiger auf Dateiende. Weitere Kommandos
     nach dem Aufruf von cat würden deshalb als Eingabe die leere Zeichen-
     kette erhalten.

HINWEISE
     Bei der Verwendung von exec können sich Abweichungen im Verhalten
     ergeben, je nachdem, welche Shell benutzt wird. Die möglichen Abwei-
     chungen sind nicht eigens beschrieben.

SIEHE AUCH
     ksh(1), sh(1), exec(2).


















Seite 5                      Reliant UNIX 5.44               Gedruckt 11/98

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026