Issue #15204 has been reported by LeiYuhou (Yuhou Lei). ---------------------------------------- Bug #15204: globbing should be prevented when wildcard is surrounded by double quotes in the ruby's command line https://bugs.ruby-lang.org/issues/15204 * Author: LeiYuhou (Yuhou Lei) * Status: Open * Priority: Normal * Assignee: * Target version: * ruby -v: ruby 2.5.1p57 (2018-03-29 revision 63029) [x64-mswin64_140] * Backport: 2.3: UNKNOWN, 2.4: UNKNOWN, 2.5: UNKNOWN ---------------------------------------- script tt like following: ~~~ ruby #!/usr/bin/ruby p ARGV ~~~ if a command line argument contains wildcard such as * or ? is surrounded by double quotes , the script's results are different between Linux and Windows. when run tt in Linux's bash : $ ./tt "*.txt" it's output is : ["*.txt"] but when run tt in Windows 10(x64)'s Command Prompter cmd.exe : c:\> ruby tt.rb "*.exe" it's output is ["a.txt" , "b.txt" , "c.txt"] I know , If enclosed with single quote, the behavior are same in Linux and Windows. I think it's behavior should be exactly same whenever any OS or Shell . otherwise it will bring many trouble to developers , think of the following scene¡§ users maybe pass asterisk(*) in the command line arguments to my script , to prevent bash to expand it , I will request users to enclose this parameter with double quotes, this will work fine in Linux . but when it 's run in windows , it will fail . Bash will expand wildcard with globbing before passing the arguments to ruby process , the function w32_cmdvector in win32/win32.c does the same thing like Bash, Just add a condition , the bug will be fixed. Index: win32/win32.c =================================================================== --- win32/win32.c (revision 64922) +++ win32/win32.c (working copy) @@ -1733,7 +1733,7 @@ // N.B. Don't glob if inside a single quoted string // - if (quote != L'\'') + if (quote != L'\'' && quote != L'"') globbing++; slashes = 0; break; ---Files-------------------------------- ruby-changes.patch (350 Bytes) -- https://bugs.ruby-lang.org/ Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe> <http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>