Trouble with system() on SunOS

Hi all,

I am facing trouble with a system call on one of my tool: XmlChecker

  • The script
    – test.rb
    system “echo ‘Here is the tool’”
    system “which XmlChecker”
    system “echo ‘$PATH def’”
    system “echo $PATH”
    system “XmlChecker -V”

  • The execution:

[578] XmlChecker -V
v1.9
[579] ruby -W0 test.rb
Here is the tool
/projects/fqdbdatamig/tools/prod/bin//XmlChecker
$PATH def
[…]:/projects/fqdbdatamig/tools/prod/bin/:.
[580]

Note that I ran the script with -W0 to avoid “warning: Insecure world
writable dir /teams/com_fqd_dev/tools, mode 040777” messages.

What is wrong with that ? The system call does not read the $PATH var ?
Why ‘echo’ ran well ?

Many thanks for your support,

Gal’

Insecure world writable dir /teams/com_fqd_dev/tools, mode
040777" messages.

What is wrong with that ? The system call does not read the
$PATH var ?
Why ‘echo’ ran well ?
The first echo of $PATH has $PATH surrounded by single quotes; the shell
will not evaluate $PATH, instead taking it literally. Encapsulate it in
double quotes (you’ll need to escape them so they execute properly), and
it should work as expected.

irb(main):003:0> system “echo “$PATH def””
/usr/bin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/php/bin:/usr/ccs/b
in:/usr/local/mysql/bin def
=> true

(The above was run on a Solaris 10 machine)

Doug P. wrote:

Insecure world writable dir /teams/com_fqd_dev/tools, mode
040777" messages.

What is wrong with that ? The system call does not read the
$PATH var ?
Why ‘echo’ ran well ?
The first echo of $PATH has $PATH surrounded by single quotes; the shell
will not evaluate $PATH, instead taking it literally. Encapsulate it in
double quotes (you’ll need to escape them so they execute properly), and
it should work as expected.

irb(main):003:0> system “echo “$PATH def””
/usr/bin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/php/bin:/usr/ccs/b
in:/usr/local/mysql/bin def
=> true

(The above was run on a Solaris 10 machine)

LOL, i am not facing a problem with a print of $PATH var, since I know
how to do and did it on the next line, what is wrong is the
execution…

[578] XmlChecker -V
v1.9
[579] ruby -W0 test.rb
Here is the tool
/projects/fqdbdatamig/tools/prod/bin//XmlChecker
$PATH def
[…]:/projects/fqdbdatamig/tools/prod/bin/:.
[580]

Well, when I run ‘XmlChecker -V’ in a shell, it generates the output
‘v1.9’.
When I try to run it through out a ruby script ‘system “XmlChecker -V”’,
nothing happens, like it was not executed. Is ‘Xmlchecker -V’ not
executed ? Why ? the $PATH var shows it knows where to find the tool
XmlChecker.

Thanks for your support,

Gal’

On 31.05.2007 16:03, Galevsky G. wrote:

double quotes (you’ll need to escape them so they execute properly), and
how to do and did it on the next line, what is wrong is the
[580]

Well, when I run ‘XmlChecker -V’ in a shell, it generates the output
‘v1.9’.
When I try to run it through out a ruby script ‘system “XmlChecker -V”’,
nothing happens, like it was not executed. Is ‘Xmlchecker -V’ not
executed ? Why ? the $PATH var shows it knows where to find the tool
XmlChecker.

Thanks for your support,

Since you do not need shell interpolation I’d use the array form of
system:

system “XmlChecker”, “-V”

Frankly, I am not sure why you are not seeing anything. Maybe it has
something to do with output buffering or such. As an alternative you
could do

p XmlChecker -V

to see whether there is any output.

Another reason why you don’t see anything is that XmlChecker might print
the version to stderr. To verify do this at a shell prompt

XmlChecker -V 2> /dev/null

If you do not see the version then it’s printed to stderr.

Kind regards

robert

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs