From: Hiroki Najima Date: 2010-09-16T11:26:30+09:00 Subject: [ruby-dev:42265] [Ruby-Bug#3836][Open] Kernel.system, spawnがスペースを含むパスで動作しない Bug #3836: Kernel.system, spawnがスペースを含むパスで動作しない http://redmine.ruby-lang.org/issues/show/3836 起票者: Hiroki Najima ステータス: Open, 優先度: Normal ruby -v: ruby 1.9.2p0 (2010-08-18) [i386-mingw32] 名島(nazy)と申します。 1.9.2からKernel.systemまたはKernel.spawnにスペースを含むコマンドを渡すと動作しなくなりました。 1.9.1および、1.8.7では動作します。 # 1.8.7にはspawnは無いのでsystemのみ NEWSには記載されていませんでしたが、これは意図的な仕様変更でしょうか? なお、コマンドをクオートすると動作します。 # スペースを含むプログラム C:\>type "spa ce.bat" @echo This is %0. # Ruby 1.9.2でクオートしない場合、エラー C:\>C:\ruby192\bin\ruby -v ruby 1.9.2p0 (2010-08-18) [i386-mingw32] C:\>C:\ruby192\bin\ruby -e 'p system("spa ce.bat")' nil C:\>C:\ruby192\bin\ruby -e 'p spawn("spa ce.bat")' -e:1:in `spawn': No such file or directory - spa ce.bat (Errno::ENOENT) from -e:1:in `
' # Ruby 1.9.1でクオートしない場合、正常動作 C:\>C:\ruby191\bin\ruby -v ruby 1.9.1p429 (2010-07-02 revision 28523) [i386-mingw32] C:\>C:\ruby191\bin\ruby -e 'p system("spa ce.bat")' This is "spa ce.bat". true C:\>C:\ruby191\bin\ruby -e 'p spawn("spa ce.bat")' 28204 This is "spa ce.bat". # クオートすればどのバージョンでも動く C:\>C:\ruby192\bin\ruby -e 'p system("\"spa ce.bat\"")' This is "spa ce.bat". true C:\>C:\ruby192\bin\ruby -e 'p spawn("\"spa ce.bat\"")' 24700 This is "spa ce.bat". C:\>C:\ruby191\bin\ruby -e 'p system("\"spa ce.bat\"")' This is "spa ce.bat". true C:\>C:\ruby191\bin\ruby -e 'p spawn("\"spa ce.bat\"")' 28168 This is "spa ce.bat". ---------------------------------------- http://redmine.ruby-lang.org