X-Recipient: archive-cygwin AT delorie DOT com X-Spam-Check-By: sourceware.org Date: Mon, 4 Aug 2008 18:18:11 +1000 (EST) From: Luke Kendall Subject: Bizarre Cygwin/Explorer/paths problem half-solved To: cygwin AT cygwin DOT com MIME-Version: 1.0 Content-Type: TEXT/plain; CHARSET=US-ASCII Message-Id: <20080804081811.C6E4585E52@pessard.research.canon.com.au> X-IsSubscribed: yes Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com I discovered today that if I try to run Windows Explorer from the Cygwin command line, and give it a pathname with spaces, it fails, but if I give the same command line to a cmd.exe command line, Explorer works! I.e. from Bash, explorer fails with an error message like "The path '/e,c:\temp\space dir' does not exist or is not a directory." I've tried every quote combo I can. If I leave off the /e option then it does open the directory, but without the side pane (which is what you'd expect with the /e option omitted). Bash shell: $ mkdir c:/temp/"space dir" $ explorer /e,c:\\temp\\space\ dir $ # NBG^ $ explorer /e,c:\\temp $ # GOOD^ $ explorer c:\\temp\\space\ dir $ # GOOD^ (but no side pane) $ explorer /e,"c:\temp\space dir" $ # NBG^ $ explorer /e,"\"c:\temp\space dir\"" $ # NBG^ DOS shell: c>explorer /e,c:\temp\space dir c>rem GOOD^ c>explorer /e,"c:\temp\space dir" c>rem GOOD^ c>explorer /e,'c:\temp\space dir' c>rem NBG^ c>explorer /e,c:\temp\space dir c>rem NBG^ Until I tried the same stuff under the DOS shell, I assumed it was explorer.exe that was busted. Now I'm just confused. I find this quite bizarre. Any suggestions? Is bash or Cygwin guessing the /e option is part of a path, and doing some extra quoting of its own or something? I just tried an strace on bash, and it looks like this guess is correct: 140 4166625 [main] bash 5696 spawn_guts: null_app_name 0 (c:\WINDOWS\explorer.exe, c:\WINDOWS\explorer.exe "/e,c:\temp\space dir") It's collected all the arguments and put them inside double quotes, and if I do that in a DOS shell too I get the exact same failure. If the directory contains no spaces, then bash does this, in contrast: 12217 33394057 [main] bash 5284 spawn_guts: 5284 = spawn_guts (/cygdrive/c/WINDOWS/explorer, c:\WINDOWS\explorer.exe /e,c:\temp) Is there some way to tell Bash/Cygwin not to do this? Or is it simply that my bash is too old? $ bash --version GNU bash, version 3.2.9(10)-release (i686-pc-cygwin) Copyright (C) 2005 Free Software Foundation, Inc. Regards, luke PS: NBG = No Good! -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/