运行这些shell命令时:
SH1$ bash
SH2$ exec date &
[1] 375
SH2$ Mon Apr 22 15:04:36 BST 2013
[1]+ Done exec date
SH2$
&
优先于exec
,并使SH2进程运行(在ksh和Solaris / bin / sh中的结果相同)。
这是为什么?它是明确定义的(或必需的)行为,还是留给每个实现?
答案 0 :(得分:1)
是的,这是标准行为。请参阅POSIX shell grammar,并注意exec
甚至没有明确涵盖;它被视为普通的cmd_name
。
答案 1 :(得分:-1)
exec替换当前的shell并执行命令
exec date
有效地运行日期和退出,让你“失去”你的原始外壳
exec date &
在子进程中运行exec。这是& amp;的定义行为。运营商。 结果与
非常相似( exec date )
&安培;和()都创建一个新的子进程,然后在新进程的上下文中执行命令。