(command.CommandList children: [ (command.If arms: [ (if_arm cond: [ (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] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:libdir) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number '$1'))} spids: [43] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:private_libdir) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number '$2'))} spids: [48] ) ] ) (command.If arms: [ (if_arm cond: [ (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>})] do_fork: T ) (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<2>}) ] spids: [54 70] ) ] ) (command.ShFunction name: find_shlib body: (BraceGroup children: [ (command.If arms: [ (if_arm cond: [ (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 ) ] spids: [100 113] ) ] ) ] ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name 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'>)} ) ) } spids: [152] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:LIBSTD_NAME) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<basename>} {($ Id.VSub_DollarName '$LIBSTD')}) ) } spids: [166] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:LIBSTD_DIR) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<dirname>} {($ Id.VSub_DollarName '$LIBSTD')}) ) } spids: [173] ) ] ) (command.If arms: [ (if_arm cond: [ (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] ) ] ) ] )