This is the mail archive of the
cygwin
mailing list for the Cygwin project.
Re: Unable to access forced mounts from /bin/sh
On Wed, Aug 24, 2005 at 07:03:21AM -0600, Eric Blake wrote:
>According to Eric Blake on 8/22/2005 6:09 AM:
>>>>Huh? Strace shows that sh fails when trying to stat /a. Does this,
>>>>perhaps, have something to do with bash switching to POSIX mode when
>>>>invoked as "sh"?
>>
>> Yes it does. I'll have to look into bash POSIX mode further, and decide
>> why cd only stat's intermediate paths in POSIX mode, to see if it warrants
>> a patch to bash.
>
>Sure enough, on 'cd -L', bash always checks for the existance of the
>entire path, then checks for posixly_correct, then tries chdir(); so bash
>succeeds where sh fails when an intermediate path name didn't exist. A
>patch will be provided in bash-3.0-12 whereby if chdir() can succeed even
>though intermediate components don't exist, then bash will allow it even
>in posix mode. My understanding of cygwin is that since //, /proc, and
>/cygdrive always exist, and /dev has no subdirectories (and in the latest
>snapshot, even /dev exists - thanks cgf!), the only time chdir(dir) can
>succeed when stat(basename(dir)) fails is with 2-level forced mount points.
"/cygdrive" (please notice the quotes and ponder what they might mean),
/proc, and /dev now show up in root, regardless of whether a "mkdir" has
been done on them but it's not a perfect solution since one can do this:
cd /
mkdir dev
rmdir dev
ls dev
ls: reading directory dev: No such file or directory
ls
... dev ...
No matter what you do, "ls /dev" will either show up as a nonexistent or
empty directory. Populating the /dev directory is not trivial,
unfortunately.
You can play similar games "/cygdrive", too, although 'ls "/cygdrive"'
will do something useful, at least.
cgf
--
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/