(command.CommandList children: [ (command.ShAssignment left: <Id.Lit_VarLike '_Dbg_restore_info='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_Dbg_restore_info='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_Dbg_restore_info='> name:_Dbg_restore_info) op: assign_op.Equal rhs: { (DQ (${ Id.VSub_Name _Dbg_tmpdir) <'/'> (${ Id.VSub_Name _Dbg_debugger_name) <_restore_> ($ Id.VSub_Dollar '$') ) } ) ] redirects: [] ) (command.Simple blame_tok: <_Dbg_help_add> more_env: [] words: [ {<_Dbg_help_add>} {<shell>} { (DQ <'**shell** [*options*]\n'> <'\n'> <'Options:\n'> <'--------\n'> <'\n'> <' --no-fns | -F : don\'t copy in function definitions from parent shell\n'> <' --no-vars | -V : don\'t copy in variable definitions\n'> <' --shell SHELL_NAME\n'> <' --posix : corresponding shell option\n'> <' --login | l : corresponding shell option\n'> <' --noprofile : corresponding shell option\n'> <' --norc : corresponding shell option\n'> <'\n'> <'Enter a nested shell, not a subshell. Before entering the shell\n'> <'current variable definitions and function definitions are stored in\n'> <'profile '> ($ Id.VSub_DollarName _Dbg_shell_temp_profile) <'. which is is read in via the\n'> <'**--init-file** option.\n'> <'\n'> <'If you don\'t want variable definitions to be set, use option **-V** or\n'> <'**--no-vars**. If you don\'t want function definitions to be set, use\n'> <'option **-F** or **--no-fns**. There are several corresponding shell\n'> <'options. Many of these by nature defeate reading on saved functions\n'> <'and variables.\n'> <'\n'> <'The shell that used is taken from the shell used to build the debugger\n'> <'which is: '> ($ Id.VSub_DollarName _Dbg_shell_name) <'. Use **--shell** to a different compatible shell.\n'> <'\n'> <'By default, variables set or changed in the shell do not persist after\n'> <'the shell is left to to back to the debugger or debugged program.\n'> <'\n'> <'However you can tag variables to persist by running the function\n'> <'\'save_vars\' which takes a list of variable names. You can run this\n'> <'as many times as you want with as many variable names as you want.\n'> <'\n'> <'For example:\n'> <' save_vars PROFILE PARSER\n'> <'marks variable PROFILE and PARSER to be examined and their values used\n'> <'in the trap EXIT of the shell.\n'> ) } ] redirects: [] do_fork: T ) (command.ShFunction name_tok: <_Dbg_parse_shell_cmd_options> name: _Dbg_parse_shell_cmd_options body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'OPTLIND='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'OPTLIND='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'OPTLIND='> name:OPTLIND) op: assign_op.Equal rhs: {(SQ )} ) ] redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <getopts_long> more_env: [] words: [ {<getopts_long>} {<lFV>} {<opt>} {<no-fns>} {<0>} {<posix>} {<no_argument>} {<login>} {<no_argument>} {<shell>} {<required_argument>} {<norc>} {<no_argument>} {<no-vars>} {<0>} {(SQ )} {($ Id.VSub_At '@')} ] redirects: [] do_fork: T ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ ($ Id.VSub_DollarName opt))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <F> pattern: (pat.Words words:[{<F>} {<no-fns>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike '_Dbg_o_fns='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_Dbg_o_fns='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '_Dbg_o_fns='> name: _Dbg_o_fns ) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <V> pattern: (pat.Words words:[{<V>} {<no-vars>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike '_Dbg_o_vars='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_Dbg_o_vars='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '_Dbg_o_vars='> name: _Dbg_o_vars ) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <shell> pattern: (pat.Words words:[{<shell>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'shell='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'shell='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'shell='> name:shell) op: assign_op.Equal rhs: {($ Id.VSub_DollarName OPTARG)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <norc> pattern: (pat.Words words: [ {<norc>} {<posix>} {<restricted>} {<login>} {<l>} {<noediting>} {<noprofile>} ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike '_Dbg_shell_opts+='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_Dbg_shell_opts+='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '_Dbg_shell_opts+='> name: _Dbg_shell_opts ) op: assign_op.PlusEqual rhs: {(DQ <--> ($ Id.VSub_DollarName opt))} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<0>}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <_Dbg_do_shell> name: _Dbg_do_shell body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Sentence child: (command.Simple blame_tok: <typeset> more_env: [] words: [{<typeset>} {<-i>} {<_Dbg_o_fns>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.ShAssignment left: <Id.Lit_VarLike '_Dbg_o_fns='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_Dbg_o_fns='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_Dbg_o_fns='> name:_Dbg_o_fns) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) (command.Sentence child: (command.Simple blame_tok: <typeset> more_env: [] words: [{<typeset>} {<-i>} {<_Dbg_o_vars>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.ShAssignment left: <Id.Lit_VarLike '_Dbg_o_vars='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_Dbg_o_vars='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_Dbg_o_vars='> name:_Dbg_o_vars) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) (command.Simple blame_tok: <typeset> more_env: [] words: [{<typeset>} {<Id.Lit_VarLike '_Dbg_shell_opts='> (SQ )}] redirects: [] do_fork: T ) (command.Simple blame_tok: <typeset> more_env: [] words: [{<typeset>} {<Id.Lit_VarLike 'shell='> ($ Id.VSub_DollarName _Dbg_shell)}] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.Binary op_id: Id.Arith_NEqual left: {($ Id.VSub_Pound '#')} right: {<Id.Lit_Digits 0>} ) right: <Id.Op_DRightParen _> redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <_Dbg_parse_shell_cmd_options> more_env: [] words: [{<_Dbg_parse_shell_cmd_options>} {($ Id.VSub_At '@')}] redirects: [] do_fork: T ) (command.AndOr children: [ (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.Binary op_id: Id.Arith_NEqual left: {($ Id.VSub_QMark '?')} right: {<Id.Lit_Digits 0>} ) right: <Id.Op_DRightParen _> redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> ) ] ops: [<Id.Op_DAmp _>] ) ] spids: [346 358] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <typeset> more_env: [] words: [{<typeset>} {<-i>} {<_Dbg_rc>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <_Dbg_shell_new_shell_profile> more_env: [] words: [ {<_Dbg_shell_new_shell_profile>} {($ Id.VSub_DollarName _Dbg_o_vars)} {($ Id.VSub_DollarName _Dbg_o_fns)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'PS1=\''> (${ Id.VSub_Name _Dbg_debugger_name) <' '> <Id.Lit_Dollar '$'> <' \''>) } ] redirects: [ (Redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName _Dbg_shell_temp_profile)} ) ] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$shell'> more_env: [] words: [ {($ Id.VSub_DollarName shell)} {<--init-file>} {($ Id.VSub_DollarName _Dbg_shell_temp_profile)} {($ Id.VSub_DollarName _Dbg_shell_opts)} ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'rc='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'rc='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'rc='> name:rc) op: assign_op.Equal rhs: {($ Id.VSub_QMark '?')} ) ] redirects: [] ) (command.Simple blame_tok: <_Dbg_restore_from_nested_shell> more_env: [] words: [{<_Dbg_restore_from_nested_shell>}] redirects: [] do_fork: T ) (command.AndOr children: [ (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {<Id.Lit_Digits 1>} right: ($ Id.Lit_ArithVarLike _Dbg_running) ) right: <Id.Op_DRightParen _> redirects: [] ) (command.Simple blame_tok: <_Dbg_print_location_and_command> more_env: [] words: [{<_Dbg_print_location_and_command>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _>] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.Simple blame_tok: <_Dbg_alias_add> more_env: [] words: [{<_Dbg_alias_add>} {<sh>} {<shell>}] redirects: [] do_fork: T ) ] )