On Wed, Apr 24, 2019, 07:12 Chet Ramey <chet.ra...@case.edu> wrote: > On 4/24/19 8:47 AM, Ian Neal wrote: > > > At what point is a subshell being invoked? There's no pipeline, command > > substitution, coprocess, background process, or explicit () subshell > here, > > which are the only cases a subshell should be created. Otherwise, the > > entire operation should be evaluated by the main shell. Arithmetic > > expansion is not in that list. > > Why would you think that /bin/true would be "evaluated by the main shell?" > It's not a shell compound command or a builtin, and non-builtin commands > are run in child processes. >
Calling what should be a simple fork(); exec(); a "subshell" is a little disingenuous unless it has its own parameter expansion options, which isn't true -- if the $((n++)) was on the left side of the file redirection (which is to say a parameter), it would be expanded by the shell before the fork(), so why is this true with the redirection itself? What makes that case so special? I posit that it shouldn't be. >