动机是如何更改命令以在没有超级用户权限但具有更改后的限制值的情况下运行?,在 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 实例。