(command.CommandList children: [ (C {<echo>} {(SQ <'--- envdir requires arguments'>)}) (command.CommandList children: [ (command.Sentence child:(C {<envdir>} {<whatever>}) terminator:<Id.Op_Semi _>) (C {<echo>} {($ Id.VSub_QMark '$?')}) ] ) (C {<echo>} {(SQ <'--- envdir complains if it cannot read directory'>)}) (C {<ln>} {<-s>} {<env1>} {<env1>}) (command.CommandList children: [ (command.Sentence child: (C {<envdir>} {<env1>} {<echo>} {<yes>}) terminator: <Id.Op_Semi _> ) (C {<echo>} {($ Id.VSub_QMark '$?')}) ] ) (C {<echo>} {(SQ <'--- envdir complains if it cannot read file'>)}) (C {<rm>} {<env1>}) (C {<mkdir>} {<env1>}) (C {<ln>} {<-s>} {<Message>} {<'env1/Message'>}) (command.CommandList children: [ (command.Sentence child: (C {<envdir>} {<env1>} {<echo>} {<yes>}) terminator: <Id.Op_Semi _> ) (C {<echo>} {($ Id.VSub_QMark '$?')}) ] ) (C {<echo>} {(SQ <'--- envdir adds variables'>)}) (C {<rm>} {<'env1/Message'>}) (command.Simple words: [{<echo>} {<This>} {<is>} {<a>} {<test.>} {<This>} {<is>} {<only>} {<a>} {<test.>}] redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'env1/Message'>})] do_fork: T ) (command.CommandList children: [ (command.Sentence child: (C {<envdir>} {<env1>} {<sh>} {<-c>} {(SQ <'echo $Message'>)}) terminator: <Id.Op_Semi _> ) (C {<echo>} {($ Id.VSub_QMark '$?')}) ] ) (C {<echo>} {(SQ <'--- envdir removes variables'>)}) (C {<mkdir>} {<env2>}) (C {<touch>} {<'env2/Message'>}) (command.CommandList children: [ (command.Sentence child: (C {<envdir>} {<env1>} {<envdir>} {<env2>} {<sh>} {<-c>} {(SQ <'echo $Message'>)}) terminator: <Id.Op_Semi _> ) (C {<echo>} {($ Id.VSub_QMark '$?')}) ] ) (C {<echo>} {(SQ <'--- envdir adds prefix'>)}) (command.CommandList children: [ (command.Sentence child: (C {<envdir>} {<-p>} {<prefix_>} {<env1>} {<sh>} {<-c>} {(SQ <'echo $Message; echo $prefix_Message'>)} ) terminator: <Id.Op_Semi _> ) (C {<echo>} {($ Id.VSub_QMark '$?')}) ] ) ] )