exec
在交互式 shell 中运行有什么作用吗?我的意思很简单exec
,没有任何参数。
那么在脚本中呢?
如果它确实做了某事,那么它会做什么?
答案1
如果未指定 command,则任何重定向都可以在当前 shell 中生效。这是手册页所说的简短版本。我的理解是,当exec
执行为空时,它不会启动新的 shell,不会对当前 shell 进行更改,并返回代码 0,这意味着它执行时没有错误。
答案2
是的:
当使用命令作为参数调用时。
通常,当您运行命令时,它会调用fork
and exec
(加上管道等)。但是当您exec
在开始处添加时(例如exec ls
),它不会调用fork
,因此 shell 被命令替换。也就是说,该命令在与 shell 所在的同一进程中运行(shell 不再存在)。
当没有命令调用时。
它应用重定向,然后生效。