Bash 参考手册指出:
管道是一个或多个命令的序列
因此,任何命令都不会因此被限定为管道吗?这似乎不是一个纯粹的语义问题,因为手册还指出:
管道中的每个命令都在其自己的子 shell 中执行
所以这意味着一些简单的事情echo foo,事实上,在子shell中运行?
该手册不是正式的规范。bash 遵循的正式规范(实现了一个很大的超集)是POSIX shell 命令语言。该规范在第 2.12 节中更清楚地说明了规则,并添加了格式以强调:
此外,多命令管道的每个命令都在子外壳环境中[...]
因此,一个简单的单命令管道(1)实际上是一个管道;但是(2)不调用子shell。