(command.CommandList children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_Number 1))} {<Id.Lit_RBracket ']'>}) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<echo>} {(DQ <'Usage: '> ($ Id.VSub_Number 0) <' <libdir> <private_libdir>'>)}) (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>}) ] spids: [11 24] ) ] else_action: [] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'libdir='> name:libdir) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number 1))} spids: [43] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'private_libdir='> name:private_libdir) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number 2))} spids: [48] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-f>} {(DQ ($ Id.VSub_DollarName libdir) <'/libjulia.so'>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Simple words: [ {<echo>} {(DQ <'ERROR: Could not open '> ($ Id.VSub_DollarName libdir) <'/libjulia.so'>)} ] redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] more_env: [] do_fork: T ) (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<2>}) ] spids: [54 70] ) ] else_action: [] redirects: [] ) (command.ShFunction name: find_shlib body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-f>} {(DQ ($ Id.VSub_Number 1))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Pipeline children: [ (C {<ldd>} {(DQ ($ Id.VSub_Number 1))}) (C {<grep>} {($ Id.VSub_Number 2)}) (C {<cut>} {<-d> (SQ <' '>)} {<-f3>}) (C {<xargs>}) ] negated: F stderr_indices: [] ) ] spids: [100 113] ) ] else_action: [] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'LIBSTD='> name:LIBSTD) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<find_shlib>} {(DQ ($ Id.VSub_DollarName libdir) <'/libjulia.so'>)} {(DQ <'libstdc++.so'>)} ) right: <Id.Eof_RParen _> ) } spids: [152] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'LIBSTD_NAME='> name:LIBSTD_NAME) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<basename>} {($ Id.VSub_DollarName LIBSTD)}) right: <Id.Eof_RParen _> ) } spids: [166] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'LIBSTD_DIR='> name:LIBSTD_DIR) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<dirname>} {($ Id.VSub_DollarName LIBSTD)}) right: <Id.Eof_RParen _> ) } spids: [173] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-f>} { (DQ ($ Id.VSub_DollarName private_libdir) <'/'> ($ Id.VSub_DollarName LIBSTD_NAME) ) } {<Id.Lit_RBracket ']'>} ) (C {<Id.Lit_LBracket '['>} {<-f>} { (DQ ($ Id.VSub_DollarName LIBSTD_DIR) <'/'> ($ Id.VSub_DollarName LIBSTD_NAME) ) } {<Id.Lit_RBracket ']'>} ) ] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<cp>} {<-v>} {(DQ ($ Id.VSub_DollarName LIBSTD_DIR) <'/'> ($ Id.VSub_DollarName LIBSTD_NAME))} {(DQ ($ Id.VSub_DollarName private_libdir))} ) (C {<chmod>} {<755>} {(DQ ($ Id.VSub_DollarName private_libdir) <'/'> ($ Id.VSub_DollarName LIBSTD_NAME))} ) ] spids: [181 212] ) ] else_action: [] redirects: [] ) ] )