
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 $LOGNAME
die 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 exec
Vorgang erfolgreich und die Shell wird ersetzt, oder der exec
Vorgang schlägt fehl. In diesem Fall &&
wird der folgende Befehl nicht ausgeführt. exec somcmd || echo fail
oder exec 2>somefile && echo ok
wä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 exec
ersetzen die ksh93-Instanz vollständig.