# Trouble with system() on SunOS

**URL:** <https://www.ruby-forum.com/t/trouble-with-system-on-sunos/104301>\
**Category:** Ruby\
**Created:** [May 16, 2007, 4:23pm UTC](https://www.ruby-forum.com/t/trouble-with-system-on-sunos/104301 "2007-05-16T16:23:13Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![galevsky](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/edb3f5/32.png) [@galevsky](https://www.ruby-forum.com/u/galevsky)\
**Post date:** [May 16, 2007, 4:23pm UTC](https://www.ruby-forum.com/t/trouble-with-system-on-sunos/104301/1 "2007-05-16T16:23:13Z")

</div>

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’

---

<div class="post-metadata">

**Author:** ![galevsky](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/edb3f5/32.png) [@galevsky](https://www.ruby-forum.com/u/galevsky)\
**Post date:** [May 16, 2007, 6:25pm UTC](https://www.ruby-forum.com/t/trouble-with-system-on-sunos/104301/2 "2007-05-16T18:25:52Z")

</div>

> 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)

---

<div class="post-metadata">

**Author:** ![galevsky](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/edb3f5/32.png) [@galevsky](https://www.ruby-forum.com/u/galevsky)\
**Post date:** [May 31, 2007, 4:03pm UTC](https://www.ruby-forum.com/t/trouble-with-system-on-sunos/104301/3 "2007-05-31T16:03:40Z")

</div>

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’

---

<div class="post-metadata">

**Author:** ![galevsky](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/edb3f5/32.png) [@galevsky](https://www.ruby-forum.com/u/galevsky)\
**Post date:** [May 31, 2007, 4:36pm UTC](https://www.ruby-forum.com/t/trouble-with-system-on-sunos/104301/4 "2007-05-31T16:36:25Z")

</div>

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
