该命令中的 sleep 命令会被执行吗?

该命令中的 sleep 命令会被执行吗?

动机是如何更改命令以在没有超级用户权限但具有更改后的限制值的情况下运行?,在 bash shell 中,如果我运行

exec su $LOGNAME && sleep 100

sleep 命令会被执行吗?

我认为不会,因为exec su $LOGNAME会用另一个shell替换当前进程中的shell。当我正常退出新 shell 时(对于&&),进程终止,并且没有进程执行 sleep 命令。

谢谢。

答案1

不应该。要么exec成功,shell 被替换,要么exec失败,在这种情况下&&不会运行以下命令。但exec somcmd || echo fail或者exec 2>somefile && echo ok会有所不同。

答案2

不,不会,请检查:

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

您将返回到之前的 shell,并exec完全替换 ksh93 实例。

相关内容