2
我使用bash,據我所知,執行後面跟着一個命令是應該取代shell而不創建新進程。例如,Shell執行和管道
exec echo hello
有印刷的「你好」的出現,然後立即離開,因爲回聲完成後,shell進程是不存在返回了。
如果我把這個作爲管道的一部分 - 例如,
exec echo hello | sed 's/hell/heck/'
或
echo hello | exec sed 's/hell/heck/'
我希望的是,同樣地,外殼將終止其進程之中的結果取而代之。然而,這並不是現實中發生的事情 - 上述命令都會打印出「hecko」並正常返回到shell,就好像「exec」這個詞不存在一樣。爲什麼是這樣?
沒錯。另一個不影響母shell的例子是使用圓括號創建一個子shell:'(exec echo hello)'。 – Alfe