[ale] bash script with su

Jim Kinney jim.kinney at gmail.com
Mon Jun 8 13:01:48 EDT 2009


On Mon, Jun 8, 2009 at 12:24 PM, Tim Watts<timtw at earthlink.net> wrote:
> A few possibilities come to mind:
>
> - Could it be a quoting problem (i.e. bash is acting on the quotes and
> effectively turning your command into something like (su initdb) && (pg_ctl
> start) ...

I have not tested using '. old carryover from embedded variables led to using "
>
> - Is there evidence that the other commands did NOT, in fact, execute (e.g.
> perhaps they ran but the output got tossed)?

the other commands did NOT run. suspicious that stdout is "lost" and
thus not dumping failures back to the main shell stdout log file.
>
> - Is it possible that initdb is 'short-circuiting' the sub-shell (i.e. exiting
> the sub-shell upon completion thus preventing the other commands from
> running)? Try the sequence w/o initdb by running it separately from the others
> and see if things improve.

Ah. good idea. Other than lazy, there's no reason to not have
individual su calls to each command.

>
> Hope this helps.
>
>
> On Monday 08 June 2009 10:18:57 am Jim Kinney wrote:
>> I have bash script that does a gazillion things. EXCEPT two of the
>> "su" lines don't do anything.
>>
>> user batadm and postgres are created (correctly - they works) followed by:
>>
>> echo 'export PGHOME=/usr/local/postgresql
>> export PGDATA=/data/pgdata
>> export PATH=$PGHOME/bin:$PATH
>> ' >> /home/postgres/.bashrc
>>
>> which should set the path to the custom postgresql binaries
>>
>> now run
>>
>> su -l -c "initdb && pg_ctl start && createlang plpgsql template1 &&
>> createdb batadm && createuser -s batadm " postgres >>$log 2>&1
>>
>> where $log is a file defined earlier for install data capture. At this
>> point it shows an execute of initdb and then nothing.
>>
>> Does the -c "stuff" just refuse to run sequential comands? I did the
>> manual su -l batadm and ran the same command sequence successfully
>> after totally deleting all the initdb files structure in postgresql.
>> So the stuff inside the quotes works. $PATH _should_ be updated for
>> the postgres user by the su -l  .
>>
>> The same type of "nothing happens" error occurs later when the batadm
>> user is called to do a series of new sql script inits for the new
>> batadm database. Run manually, the process is fine. Run in a su -l
>> sequence of &&'ed calls it fails and generates no error message.
>>
>> Ideas?
>>
>> --
>
> --
> If I were two-faced, would I be wearing this one?
>  -- Abraham Lincoln
>
> _______________________________________________
> Ale mailing list
> Ale at ale.org
> http://mail.ale.org/mailman/listinfo/ale
>



-- 
-- 
James P. Kinney III
Actively in pursuit of Life, Liberty and Happiness



More information about the Ale mailing list