Wird der Sleep-Befehl in diesem Befehl jemals ausgeführt?

Wird der Sleep-Befehl in diesem Befehl jemals ausgeführt?

Motiviert vonWie kann ich meinen Befehl so ändern, dass er ohne Superuser-Berechtigungen, aber mit dem geänderten Grenzwert ausgeführt wird?, wenn ich in einer Bash-Shell ausführe

exec su $LOGNAME && sleep 100

wird der Sleep-Befehl jemals ausgeführt?

Ich glaube nicht, da exec su $LOGNAMEdie Shell im aktuellen Prozess durch eine andere Shell ersetzt wird. Wenn ich die neue Shell normal beende (für &&), wird der Prozess beendet und es gibt keinen Prozess, der den Sleep-Befehl ausführt.

Danke.

Antwort1

Das sollte es nicht. Entweder ist der execVorgang erfolgreich und die Shell wird ersetzt, oder der execVorgang schlägt fehl. In diesem Fall &&wird der folgende Befehl nicht ausgeführt. exec somcmd || echo failoder exec 2>somefile && echo okwäre jedoch anders.

Antwort2

Nein, das wird es nicht. Überprüfen Sie:

ksh93
$ exec /bin/echo bla && sleep 1 && echo foo
bla

Sie gelangen zurück zur vorherigen Shell und execersetzen die ksh93-Instanz vollständig.

verwandte Informationen