Open MPI logo

Open MPI Development Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Development mailing list

Subject: Re: [OMPI devel] bug with /bin/sh and /bin/ksh
From: Ralf Wildenhues (Ralf.Wildenhues_at_[hidden])
Date: 2010-05-03 14:13:41


Hello,

* Jeff Squyres wrote on Mon, May 03, 2010 at 04:04:59PM CEST:
> > On Apr 29, 2010, at 11:24 AM, Jonathan Vincent wrote:
> >
> > > sh -c '/usr/bin/env FOO=bar (echo hello)'
> > > ksh -c '/usr/bin/env FOO=bar (echo hello)'
> > >
> > > is not valid
> > > sh -c '/usr/bin/env FOO=bar echo hello'
> > > works.
> >
> > Per your later mails, plm_rsh_module.c does this:
> >
> > tmp = opal_argv_split("( test ! -r ./.profile || . ./.profile;", ' ');
> >
> > (and later adds the closing ")"). You reported the final line to be:
> >
> > /usr/bin/env LD_LIBRARY_PATH=/pdc/vol/openmpi/1.4.1/intel/lib:/pdc/vol/icompilers/11.1/icc/lib/intel64:/pdc/vol/i-compilers/11.1/ifort/lib/intel64 ( test ! -r ./.profile || . ./.profile; /pdc/vol/openmpi/1.4.1/intel/bin/orted -mca ess env -mca orte_ess_jobid 284360704 -mca orte_ess_vpid 3 -mca orte_ess_num_procs 5 --hnp-uri "284360704.0;tcp://193.11.170.208:49530" )
> >
> > What would the correct syntax be?

Well, after the arguments setting the variables, portable env really
only takes a command line with arguments, not something that is passed
to the shell again. You could work around this by constructing
something like

  /usr/bin/env var=val ... sh -c 'script ...'

>> With the || and ;, are the () really unnecessary?

Well, neither the () nor the || nor ; really belong in a command-line
that is not interpreted by a shell.

Cheers,
Ralf