delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2003/02/14/13:38:21

Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sources.redhat.com/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sources.redhat.com/ml/#faqs>
Sender: cygwin-owner AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
Delivered-To: mailing list cygwin AT cygwin DOT com
Mail-Copies-To: nobody
To: cygwin AT cygwin DOT com
Subject: Re: Zsh filename completion sluggishness?
References: <Pine DOT LNX DOT 4 DOT 21 DOT 0302132230380 DOT 9273-100000 AT gremlin DOT fruitbat DOT org>
<874r76ss4p DOT fsf AT squeaker DOT lickey DOT com>
<20030214180959 DOT GA19962 AT redhat DOT com>
From: Matt Armstrong <matt AT lickey DOT com>
Mail-Followup-To: cygwin AT cygwin DOT com
Date: Fri, 14 Feb 2003 11:38:06 -0700
In-Reply-To: <20030214180959.GA19962@redhat.com> (Christopher Faylor's
message of "Fri, 14 Feb 2003 13:09:59 -0500")
Message-ID: <87y94ir9m9.fsf@squeaker.lickey.com>
User-Agent: Gnus/5.090016 (Oort Gnus v0.16) Emacs/21.2
MIME-Version: 1.0
X-Virus-Scanned: by AMaViS snapshot-20020300

Christopher Faylor <cgf-cygwin AT cygwin DOT com> writes:

> On Fri, Feb 14, 2003 at 10:12:54AM -0700, Matt Armstrong wrote:
>>In the Win32 world, quotes around path elements are valid.  If I have:
>>
>>    PATH="c:\foo bar"
>>
>>cmd.exe will find executables in that dir.
>>
>>When I run bash or zsh, things in "c:\foo bar" aren't found.
>
> This is a UNIX emulation environment.  "c:\foo bar" doesn't mean the c drive
> in a PATH variable.  It means the 'c' directory followed by the '\foo bar'
> directory.  Colon is the separator for PATH.
>
> The correct syntax for the above is PATH="/cygdrive/c/foo bar" .

I understand completely -- as I said somewhat ambiguously I was
setting the path to "c:\foo bar" in cmd.exe, then running bash.

When Cygwin initializes its PATH from the Win32 one, it doesn't handle
quoted elements properly.

E.g. cygwin converts the Win32 path like this:

    c:\foo;"c:\bar" -> /cygdrive/c/foo:"c:\bar"

But it should do this:

    c:\foo;"c:\bar" -> /cygdrive/c/foo:/cygdrive/c/bar

The latter is the semantic equivalent to the Win32 path.

The session below describes exactly what I'm talking about.

Microsoft Windows 2000 [Version 5.00.2195]
(C) Copyright 1985-2000 Microsoft Corp.

C:\>cd foo bar

C:\foo bar>dir
 Volume in drive C is MYDISK
 Volume Serial Number is 7C67-4A84

 Directory of C:\foo bar

02/14/2003  10:01a      <DIR>          .
02/14/2003  10:01a      <DIR>          ..
02/14/2003  10:01a                  19 foobar.cmd
               1 File(s)             19 bytes
               2 Dir(s)   1,021,567,488 bytes free

C:\foo bar>cd ..

C:\>foobar
'foobar' is not recognized as an internal or external command,
operable program or batch file.

C:\>set PATH="c:\foo bar";%PATH%

C:\>foobar

C:\>echo I ran foobar!
I ran foobar!

C:\>cd cygwin

C:\cygwin>cygwin

maarmstr AT MAARMSTR ~
$ which foobar.cmd
foobar.cmd: Command not found.

maarmstr AT MAARMSTR ~
$ echo $PATH
/usr/local/bin:/usr/bin:/bin:"c:/foo bar":/cygdrive/c/WINNT/system32:/cygdrive/c/WINNT:/cygdrive/c/WINNT/System32/Wbem:/bin:/usr/bin:/usr/X11R6/bin

maarmstr AT MAARMSTR ~
$ export PATH='/cygdrive/c/foo bar':$PATH

maarmstr AT MAARMSTR ~
$ which foobar.cmd
/cygdrive/c/foo bar/foobar.cmd

maarmstr AT MAARMSTR ~
$

-- 
matt

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Bug reporting:         http://cygwin.com/bugs.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019