当使用命令作为参数调用时。

当使用命令作为参数调用时。

exec在交互式 shell 中运行有什么作用吗?我的意思很简单exec,没有任何参数。

那么在脚本中呢?

如果它确实做了某事,那么它会做什么?

答案1

如果未指定 command,则任何重定向都可以在当前 shell 中生效。这是手册页所说的简短版本。我的理解是,当exec执行为空时,它不会启动新的 shell,不会对当前 shell 进行更改,并返回代码 0,这意味着它执行时没有错误。

答案2

是的:

当使用命令作为参数调用时。

通常,当您运行命令时,它会调用forkand exec(加上管道等)。但是当您exec在开始处添加时(例如exec ls),它不会调用fork,因此 shell 被命令替换。也就是说,该命令在与 shell 所在的同一进程中运行(shell 不再存在)。

当没有命令调用时。

它应用重定向,然后生效。

相关内容