Executing systems commands

J

John Maclean

=begin
Hey chaps.

I'm using an array to find the locations of various commands on a
system. Three versions of the same thing. Two work and one doesn't. Any one
know why?
=end

# here's an array of commands that we want to find
k = %w[ ruby xterm enlightenment emacs]


#why does this work?
k.each do |x|
p system("which #{x}")
end

# and this work
k.each do |x|
p system("whereis #{x}")
end


# but this doesn't
k.each do |x|
p system("type -p #{x}")
end


__END__
Regards,

- jjm
 
F

framefritti

John Maclean ha scritto:
=begin
Hey chaps.

I'm using an array to find the locations of various commands on a
system. Three versions of the same thing. Two work and one doesn't. Any one
know why?
=end

# here's an array of commands that we want to find
k = %w[ ruby xterm enlightenment emacs]


#why does this work?
k.each do |x|
p system("which #{x}")
end

# and this work
k.each do |x|
p system("whereis #{x}")
end


# but this doesn't
k.each do |x|
p system("type -p #{x}")
end


__END__
Regards,

Just a hint (maybe wrong): could this depend on the fact that "type"
is a
shell builtin, while "which" and "whereis" are external commands?
 
S

Simon Krahnke

* John Maclean said:
#why does this work?
k.each do |x|
p system("which #{x}")
end

# and this work
k.each do |x|
p system("whereis #{x}")
end

which and whereis are real programs
# but this doesn't
k.each do |x|
p system("type -p #{x}")
end

whereas type is a shell builtin. On my system the standard shell is dash,
which doesn't recognize the -p switch.

NB: system just returns true or false, the output of the command is not
passed to ruby. Use %x for that.

mfg, simon .... l
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,744
Messages
2,569,484
Members
44,905
Latest member
Kristy_Poole

Latest Threads

Top