=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,
John M. ha scritto:
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?
#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