2

运行这些 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 中结果相同)。

为什么是这样?它是明确定义(或必需)的行为,还是留给每个实现?

4

2 回答 2

1

是的,这是标准行为。请参阅POSIX shell 语法,并注意exec甚至没有明确涵盖;它被视为普通的cmd_name.

于 2013-04-22T14:34:03.427 回答
-1

exec 替换当前 shell 并执行命令

exec date

有效地运行日期并退出,让你“失去”你原来的外壳

exec date &

在子进程中运行 exec。这是 & 运算符的定义行为。结果与

( exec date )

& 和 ( ) 都创建一个新的子进程,然后在新进程的上下文中执行命令。

于 2013-04-22T14:34:30.117 回答