
Motivado por¿Cómo puedo cambiar mi comando para que se ejecute sin privilegios de superusuario pero con el valor límite modificado?, en un shell bash, si ejecuto
exec su $LOGNAME && sleep 100
¿Se ejecutará alguna vez el comando de suspensión?
Creo que no, porque exec su $LOGNAME
reemplazará el shell en el proceso actual con otro shell. Cuando salgo del nuevo shell normalmente (para &&
), el proceso finaliza y no hay ningún proceso para ejecutar el comando de suspensión.
Gracias.
Respuesta1
No debería. O exec
tiene éxito y se reemplaza el shell, o exec
falla, en cuyo caso &&
no se ejecuta el siguiente comando. exec somcmd || echo fail
o exec 2>somefile && echo ok
sería diferente, sin embargo.
Respuesta2
No, no lo hará, verifique:
ksh93
$ exec /bin/echo bla && sleep 1 && echo foo
bla
Volverá al shell anterior y exec
reemplazará la instancia ksh93 por completo.