外壳执行和管道



我正在使用bash,据我所知,exec后面的命令应在不创建新过程的情况下替换shell。例如,

exec echo hello

出现打印" Hello",然后立即退出,因为Echo完成后,Shell过程不再存在。

如果我将其作为管道的一部分,例如,

exec echo hello | sed 's/hell/heck/'

echo hello | exec sed 's/hell/heck/'

我的期望是,同样,外壳将由于其被替换而终止。不过,这并不是现实中发生的事情 - 上面的两个命令打印" hecko"并正常返回外壳,就像" exec"一词不在那样。为什么这是?

bash手册中有句子:

管道中的每个命令都是作为单独的过程执行的(即 一个子壳)。

因此,在两个示例中,第一个管道首先产生了两个过程,并且" Exec"在一个产卵过程之一内执行 - 没有影响外壳执行管道。

相关内容

  • 没有找到相关文章

最新更新