Welchen Sinn hat exec?

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
smutbert
Moderator
Beiträge: 8315
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Welchen Sinn hat exec?

Beitrag von smutbert » 02.04.2014 14:21:32

Hallo,

gelegentlich stoße ich auf scheinbar grundlegende Dinge, deren Sinn sich mir nicht erschließen will. Dieses Mal dreht es sich um den Befehl exec, der offensichtlich üblicherweise bereits in der Shell eingebaut ist. Durch Ausprobieren habe ich nur herausgefunden, dass exec einen Befehl ausführt und danach die Shell beendet, aber das kann doch noch nicht alles sein?
Verwendet wird er beispielsweise im Debianwiki zum Start von fluxbox über die .xinitrc:

Code: Alles auswählen

exec startfluxbox
Wer mag mir auf die Sprünge helfen :hail:

lg smutbert

Benutzeravatar
shoening
Beiträge: 897
Registriert: 28.01.2005 21:05:59
Lizenz eigener Beiträge: MIT Lizenz

Re: Welchen Sinn hat exec?

Beitrag von shoening » 02.04.2014 14:40:41

Hi,

aus man bash:
exec [-cl] [-a name] [command [arguments]]
If command is specified, it replaces the shell. No new process is created.
Der wesentliche Punkt ist, dass der neue Befeht den Prozess quasi „übernimmt“.

Hilft das zum Verständnis?
Bürokratie kann man nur durch ihre Anwendung bekämpfen.

Benutzeravatar
smutbert
Moderator
Beiträge: 8315
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: Welchen Sinn hat exec?

Beitrag von smutbert » 02.04.2014 14:50:39

Ja, Danke. D.h. ua auch dass in einem Skript Befehle, die nach einem exec … folgen, nicht mehr ausgeführt werden, oder?

kuerbis
Beiträge: 20
Registriert: 29.03.2014 12:06:40

Re: Welchen Sinn hat exec?

Beitrag von kuerbis » 02.04.2014 14:55:03

Durch Ausprobieren habe ich nur herausgefunden, dass exec einen Befehl ausführt und danach die Shell beendet
Nein, die Shell wird sofort beendet bzw. durch den zu startenden Prozess ersetzt. Ein Vorteil bei der Verwendung von exec in der .xinitrc ist, dass die Shell nicht die ganze Zeit untätig im Speicher herumhängt, während (in diesem Beispiel) Fluxbox läuft.
D.h. ua auch dass in einem Skript Befehle, die nach einem exec … folgen, nicht mehr ausgeführt werden, oder?
Ja, die Shell ist dann schließlich weg.
"There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies and the other way is to make it so complicated that there are no obvious deficiencies." (C.A.R. Hoare)

Benutzeravatar
smutbert
Moderator
Beiträge: 8315
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: Welchen Sinn hat exec?

Beitrag von smutbert » 02.04.2014 15:14:34

jetzt ist alles klar, Danke euch beiden.

uname
Beiträge: 12045
Registriert: 03.06.2008 09:33:02

Re: Welchen Sinn hat exec?

Beitrag von uname » 02.04.2014 16:41:56

Ich nutze es manchmal in ~/.bash_profile für einen SSH-Gast-Benutzer es in folgender Form:

Code: Alles auswählen

exec /usr/bin/screen -xRR
Das hat den Vorteil, dass die Person nicht einfach über ein Detachen der Debianscreen-Sitzung die Standard-Shell zurückerhält sondern vom System runterfliegt. Ok, das Detachen von screen-Sitzungen kann man auch anders unterbinden. Gleiches kann man wahrscheinlich zur noch besseren Absicherung von restricted-Shells nutzen.

Benutzeravatar
smutbert
Moderator
Beiträge: 8315
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: Welchen Sinn hat exec?

Beitrag von smutbert » 02.04.2014 19:20:04

hui, es ist lustig neue Tricks zu lernen, Danke

Antworten