On 28.04.2009, at 15:09, p...@laptop.org wrote: > bert wrote: >> >> On 28.04.2009, at 14:27, p...@laptop.org wrote: >> >>> bert wrote: >>>> >>>> On 28.04.2009, at 13:37, Martin Langhoff wrote: >>>> >>>>> On Tue, Apr 28, 2009 at 1:19 PM, Ignacio Vazquez-Abrams >>>>> <ivazquez...@gmail.com> wrote: >>>>>> Ah, I see now. >>>>>> >>>>>> Try this: >>>>>> >>>>>> bash -c 'touch "$@"' "${c...@]}" >>>>> >>>>> Riiight, that works better... but >>>>> >>>>>> Or in the case of the full script: >>>>>> >>>>>> bash -c "$ERL"' "$@"' "${erl_comma...@]}" >>>>> >>>>> ...it doesn't work for runuser -- which is the real target. >>>>> Runuser >>>>> looks at the added params after -c and tries to parse them. There >>>>> doesn't seem to be any support for passing parameters. >>>>> >>>>> hmmmmm. >>>> >>>> Maybe you should use su directly instead of runuser? >>> >>> won't that have the same problem? it still wants a command >>> passed via a -c STRING convention. >>> >>> i think this is somewhat intractable, and any time spent on it >>> would be better spent creating a patch to runuser that lets it >>> take its command as strace does, or as xterm does with -e, which >>> avoids the vector->string->vector translations which are the real >>> issue. >> >> >> No, su passes all arguments after -c to the program you specify. > > can you give an example? > > $ su root -c /bin/echo one two three > Password: > > $ su root -c '/bin/echo one two three' > Password: > one two three > $
It's not a problem in su but in bash. See "man bash": -c string If the -c option is present, then commands are read from string. If there are arguments after the string, they are assigned to the positional parameters, starting with $0. Note it starts with $0 not $1. So this works: $ su root -c '/bin/echo "$@"' /bin/echo one two three - Bert - _______________________________________________ Devel mailing list Devel@lists.laptop.org http://lists.laptop.org/listinfo/devel