Bug #8550
closedOn Windows Process.spawn 'command', 'arg1', 'arg2', ... evals the arguments
Description
=begin
Environment: ruby 2.0.0p195 (2013-05-14) [x64-mingw32] (RubyInstaller with DevKit) on Windows 7 64bit
According to the Process.spawn documentation, the syntax 'cmdname, arg1, ...' doesn't involve the shell. Indeed, on Unix this is true: ((%Process.spawn 'echo', '$PATH'%)) prints '$PATH'.
But on Windows the behaviour is different: executing ((%Process.spawn 'echo', '%Path%'%)) prints the contents of the Path environment variable.
I think the behaviour should be the same on the different OSes; at least, if it is not possible, the documentation should point it out.
=end
Files
Updated by luislavena (Luis Lavena) almost 11 years ago
Hello,
On Windows, 'echo' is not an external command, is part of cmd.exe internal commands, like cd and others.
Updated by nobu (Nobuyoshi Nakada) almost 11 years ago
- Category set to doc
This is a spec.
Otherwise you have to write system(ENV["COMSPEC"], "/c", "echo foo"), and it seems too messy.
Patches for the rdoc are welcome.
Updated by steveklabnik (Steve Klabnik) over 10 years ago
- File 0001-Add-caveats-to-Process-spawn-regarding-shell-built-i.patch 0001-Add-caveats-to-Process-spawn-regarding-shell-built-i.patch added
I've attached a patch for the RDOC, what do you think?
Updated by zzak (zzak _) over 10 years ago
- Status changed from Open to Closed
- % Done changed from 0 to 100
This issue was solved with changeset r42391.
Maurizio, thank you for reporting this issue.
Your contribution to Ruby is greatly appreciated.
May Ruby be with you.
- process.c: [DOC] Document caveats of command form of Process.spawn
with regard to the shell and OS. Patched by Steve Klabnik [Bug #8550]