sh(1): Clarify subshells/processes for pipelines.

For multi-command pipelines,
1. all commands are direct children of the shell (unlike the original
   Bourne shell)
2. all commands are executed in a subshell (unlike the real Korn shell)

MFC after:	1 week
This commit is contained in:
Jilles Tjoelker 2010-10-16 14:37:56 +00:00
parent 9fa5f4a093
commit f1ec058177
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=213926

View File

@ -32,7 +32,7 @@
.\" from: @(#)sh.1 8.6 (Berkeley) 5/4/95
.\" $FreeBSD$
.\"
.Dd September 10, 2010
.Dd October 16, 2010
.Dt SH 1
.Os
.Sh NAME
@ -736,6 +736,13 @@ both of a command is considered to be assigned by the
pipeline before any redirection specified by redirection
operators that are part of the command.
.Pp
Note that unlike some other shells,
.Nm
executes each process in a pipeline with more than one command
in a subshell environment and as a child of the
.Nm
process.
.Pp
If the pipeline is not in the background (discussed later),
the shell waits for all commands to complete.
.Pp
@ -773,15 +780,6 @@ to be executed sequentially;
an
.Ql &
causes asynchronous execution of the preceding AND-OR-list.
.Pp
Note that unlike some other shells,
.Nm
executes each process in the pipeline as a child of the
.Nm
process.
Shell built-in commands are the exception to this rule.
They are executed in the current shell, although they do not affect its
environment when used in pipelines.
.Ss Background Commands (&)
If a command is terminated by the control operator ampersand
.Pq Ql & ,