execlp/execvp needs case-correct PATH
Corinna Vinschen
corinna-cygwin@cygwin.com
Tue Feb 10 09:27:00 GMT 2015
On Feb 9 21:49, Thomas Wolff wrote:
> Am 09.02.2015 um 11:17 schrieb Corinna Vinschen:
> >On Feb 9 00:04, Thomas Wolff wrote:
> >>With a Windows case sensitive file system (and according mount flags
> >>for /cygdrive), the PATH does not properly reflect casing of the actual
> >>directories (e.g. C:\WINDOWS vs. C:\Windows, thanks MS...).
> >>However, the shell finds programs anyway, like e.g. notepad.
> >>The exec*p system calls, on the other hand, do not find a program in this
> >>case as demonstrated by the attached test program.
> >>This is in contrast to the Linux (and POSIX?) manual page which claims
> >>„The execlp(), execvp(), and execvpe() functions duplicate the actions
> >>of the shell in searching for an executable file …“
> >I can't reproduce this. If I change my cygdrive mounts to
> >case-sensitive, my shell doesn't start notepad anymore:
> >
> > $ cat /etc/fstab
> > none /mnt cygdrive binary,posix=1,user 0 0
> > $ echo $SHELL
> > /bin/tcsh
> > $ echo $path
> > /usr/bin /mnt/c/WINDOWS/system32 /mnt/c/WINDOWS /mnt/c/WINDOWS/System32/Wbem /mnt/c/WINDOWS/System32/WindowsPowerShell/v1.0 /usr/lib/lapack
> > $ notepad
> > notepad: Command not found.
> > $ /mnt/c/Windows/notepad
> > <works>
> > $
> Sorry, I forgot one detail: I added /cygdrive/c/Windows/System32 to my path
> so the shell will find it, but yet execlp does not find it.
Which makes sense, given that notepad is not in C:\Windows\System32,
but in C:\Windows.
Corinna
--
Corinna Vinschen Please, send mails regarding Cygwin to
Cygwin Maintainer cygwin AT cygwin DOT com
Red Hat
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://cygwin.com/pipermail/cygwin/attachments/20150210/1070ed1c/attachment.sig>
More information about the Cygwin
mailing list