Executing systems commands

=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

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?

* John Maclean <jayeola@gmail.com> (12:19) schrieb:

#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