You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何单命令管道不会在子shell中执行?

Bash管道的子shell特性验证

我翻了bash 4.4.19的官方手册,里面对管道(Pipelines)的定义挺清楚的:

管道是由控制操作符|或|&分隔的一个或多个命令组成的序列。格式为:[time [-p]] [ ! ] command [ [|||&] command2 ... ]

手册里还提到一个很关键的特性:管道中的每个命令都作为独立进程执行(即在子shell中)。这个特性其实很好验证,我给你展示下实际操作中的表现:

$ pwd
/Users/ravron
$ ls | grep src # 先确认src目录存在
src
$ cd src | true # 尝试在管道里执行cd命令
$ pwd # 查看当前目录,发现根本没变化
/Users/ravron

你看,虽然我们执行了cd src命令,但因为它是在管道里的子shell进程中运行的,子shell执行完就退出了,父shell的当前工作目录完全没受到影响。这就直观证明了手册里说的管道命令在子shell执行的特性。

内容的提问来源于stack exchange,提问作者ravron

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:13:38