From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 22431 invoked by alias); 9 Sep 2009 16:31:25 -0000 Received: (qmail 22333 invoked by uid 22791); 9 Sep 2009 16:31:22 -0000 X-SWARE-Spam-Status: No, hits=-1.2 required=5.0 tests=AWL,BAYES_00 X-Spam-Check-By: sourceware.org Received: from web30201.mail.mud.yahoo.com (HELO web30201.mail.mud.yahoo.com) (209.191.69.48) by sourceware.org (qpsmtpd/0.43rc1) with SMTP; Wed, 09 Sep 2009 16:31:13 +0000 Received: (qmail 89533 invoked by uid 60001); 9 Sep 2009 16:31:12 -0000 Message-ID: <989917.88039.qm@web30201.mail.mud.yahoo.com> Received: from [146.6.201.177] by web30201.mail.mud.yahoo.com via HTTP; Wed, 09 Sep 2009 09:31:11 PDT Date: Wed, 09 Sep 2009 16:31:00 -0000 From: "Ziser, Jesse" Subject: Re: syntax for Cygwin bash invoking Win apps To: cygwin@cygwin.com In-Reply-To: MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: quoted-printable X-IsSubscribed: yes Mailing-List: contact cygwin-help@cygwin.com; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner@cygwin.com Mail-Followup-To: cygwin@cygwin.com X-SW-Source: 2009-09/txt/msg00207.txt.bz2 --- On Wed, 9/9/09, Mark J. Reed wrote: > From: Mark J. Reed > Subject: Re: syntax for Cygwin bash invoking Win apps > To: cygwin@cygwin.com > Date: Wednesday, September 9, 2009, 11:10 AM > On Wed, Sep 9, 2009 at 12:05 PM, > Christopher Faylor wrote: > >>>>> $ cmd /c echo "\"abc\"" > >>>>> "\"abc\"" > >>>>> > >>>>> # Wahhh?! > >>>>> > >>>>> Anyone who knows the explanation would > make me very grateful. I've tried > >>>>> this with other Windows apps too, and > the same weirdness seems to occur. > >> > >>Larry Hall: > >>>>All of the above is consistent with bash > shell quoting. > >> > >>No, it's really not. =A0Those backslashes should be > long gone by the > >>time cmd.exe gets its arguments, yet it echoes > them. =A0It seems that > >>the Cygwin version of bash stops short before doing > some of the work > >>it normally does itself on other systems, assuming > the executed > >>command will have its command line run through the > preprocessor in the > >>Cygwin DLL. > > > > Actually, I'd say that was cmd doing something funky. > =A0It's hard to believe > > that bash was actually special-casing cmd.exe. >=20 > I don't think it's special-casing cmd.exe.=A0 I think > some of the > command line processing that is done by bash on Linux has > been moved > out of bash and into the DLL command line preprocessor on > Cygwin. >=20 > But even if I'm wrong about the details, bash has to be > doing > something different here.=A0 On any other UNIX system, > the "cmd" command > would get an argv of ["cmd", "/c", "echo", "\"abc\""], but > here it > seems to be getting ["cmd", "/c", "echo", "\\\"abc\\\""]. Actually, in the case I gave, it looks more like it's getting ["cmd", "/c",= "echo", "\"\\\"abc\\\"\""], which is even sillier. But there's something else I just found: I wrote a Visual Studio applicatio= n to just print out the arguments it gets, and for the command line: $ cmd /c testme "\"hi\"" I get ["cmd", "/c", "testme", "\"hi\""], which is exactly what I would expe= ct! Furthermore, it actually ADDS quotes in one case I just tried: $ cmd /c echo \"hi\" "\"hi\"" Where did those outer quotes come from? Maybe there are a combination of w= eird things going on. It almost seems like cmd.exe is somehow getting acce= ss to its command line before bash touches it, and it's using its own weird= rules to decide how to parse that, but something somewhere (maybe bash?) i= s adding quotes in a futile attempt to make itself understood better? -- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple