Linda Walsh wrote: > > Bob Proulx wrote: >> Yes, but it is a fork(2) of the parent shell and all of the variables >> from the parent are copied along with the fork into the child process >> and that includes non-exported variables. Normally you would expect >> that a subprocess wouldn't have access to parent shell variables >> unless they were exported. But with a subshell a copy of all >> variables are available. >> >> Bob > -- > Not really. > It only seems that way because within () any "$xxxx" is usually > expanded BEFORE the () starts from the parent.... > > You can see this by > GLOBAL="hi there" > (echo $GLOBAL) > prints out "hi there" as expected, but if we hide > $GLOBAL so it isn't seen by parent: > (foo=GLOBAL; echo ${!foo}) > prints "" --- I mistyped that but it brings me to an interesting conundrum:
GLOBAL="hi there" {foo=GLOBAL echo ${!foo}; } > (foo=GLOBAL echo ${!foo} ) But: > { foo=GLOBAL;echo ${!foo}; } hi there > (foo=GLOBAL; echo ${!foo}) hi there ---- Weird...