[prev in list] [next in list] [prev in thread] [next in thread] 

List:       ruby-talk
Subject:    Re: Trouble with system() on SunOS
From:       Robert Klemme <shortcutter () googlemail ! com>
Date:       2007-05-31 14:35:11
Message-ID: 5c84gtF309qlmU1 () mid ! individual ! net
[Download RAW message or body]

On 31.05.2007 16:03, Galevsky Gal wrote:
> Doug Phillips 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,

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

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic