|
exec [Kommandozeile]
Ähnlich wie beim Dot-Kommando wird keine Subshell erzeugt, sondern die Kommandozeile
in der aktuellen Umgebung ausgeführt. Eine erste Anwendung liegt darin, das aktuelle Programm durch ein anderes zu überlagern. Wenn Sie z. B. die Bourne-Shell als Login-Shell haben, aber lieber mit der C-Shell arbeiten, können sie die Bourne-Shell durch die Kommandozeile exec /bin/csh als letzte Zeile in der .profile-Datei durch die C-shell ersetzen (Wenn Sie die C-Shell nur Aufrufen, müssen Sie beide Shells beenden, um sich auszuloggen). Das Kommando entspricht also dem Systemcall exec().
Wird jedoch kein Kommando angegeben, kann die E/A der aktuellen Shell dauerhaft
umgeleitet werden. Beispiel:
exec 2>fehler
leitet alle folgenden Fehlerausgaben in die Datei "fehler" um, bis die
Umleitung explizit durch
exec 2>-
zurückgenommen wird. Es können bei exec auch andere Dateideskriptoren
verwendet werden. Ebenso kann auch die Dateiumleitung einer Eingabedatei erfolgen,
z. B.:
exec 3< datei
Danach kann mit read <&3 von dieser Datei gelesen werden, bis
die Umleitung mit exec 3<- wieder zurückgenommen wird.
Man kann also in Shellskripts durch das Einfügen einer exec-Anweisung die
Standardausgabe/-eingabe global für das gesamte Skript umleiten, ohne weitere
Änderungen vornehmen zu müssen (eine andere Möglichkeit wäre die
oben beschriebene Verwendung von { }).
|
|
|