(CommandList children: [ (C {(echo)} {(SQ <'--- envdir requires arguments'>)}) (Sentence child:(C {(envdir)} {(whatever)}) terminator:<Op_Semi ';'>) (C {(echo)} {($ VSub_QMark '$?')}) (C {(echo)} {(SQ <'--- envdir complains if it cannot read directory'>)}) (C {(ln)} {(-s)} {(env1)} {(env1)}) (Sentence child:(C {(envdir)} {(env1)} {(echo)} {(yes)}) terminator:<Op_Semi ';'>) (C {(echo)} {($ VSub_QMark '$?')}) (C {(echo)} {(SQ <'--- envdir complains if it cannot read file'>)}) (C {(rm)} {(env1)}) (C {(mkdir)} {(env1)}) (C {(ln)} {(-s)} {(Message)} {(env1/Message)}) (Sentence child:(C {(envdir)} {(env1)} {(echo)} {(yes)}) terminator:<Op_Semi ';'>) (C {(echo)} {($ VSub_QMark '$?')}) (C {(echo)} {(SQ <'--- envdir adds variables'>)}) (C {(rm)} {(env1/Message)}) (SimpleCommand words: [{(echo)} {(This)} {(is)} {(a)} {(test.)} {(This)} {(is)} {(only)} {(a)} {(test.)}] redirects: [(Redir op_id:Redir_Great fd:16777215 arg_word:{(env1/Message)} spids:[110])] ) (Sentence child: (C {(envdir)} {(env1)} {(sh)} {(-c)} {(SQ <'echo $Message'>)}) terminator: <Op_Semi ';'> ) (C {(echo)} {($ VSub_QMark '$?')}) (C {(echo)} {(SQ <'--- envdir removes variables'>)}) (C {(mkdir)} {(env2)}) (C {(touch)} {(env2/Message)}) (Sentence child: (C {(envdir)} {(env1)} {(envdir)} {(env2)} {(sh)} {(-c)} {(SQ <'echo $Message'>)}) terminator: <Op_Semi ';'> ) (C {(echo)} {($ VSub_QMark '$?')}) (C {(echo)} {(SQ <'--- envdir adds prefix'>)}) (Sentence child: (C {(envdir)} {(-p)} {(prefix_)} {(env1)} {(sh)} {(-c)} {(SQ <'echo $Message; echo $prefix_Message'>)} ) terminator: <Op_Semi ';'> ) (C {(echo)} {($ VSub_QMark '$?')}) ] )