[net.cog-eng] Behaviour of .. with symbolic links.

idallen@watmath.UUCP (03/26/84)

In a shell, if X is a symbolic link, then "cd /a/b/c/X/.." does not put
you in directory "/a/b/c".  Similarly, a pwd(1) after "cd /a/b/c/X"
does not print "/a/b/c/X".  My question is, for programs such as the C
Shell that try to keep track of where they are ($cwd), what should
happen?  If you "cd /a/b/c/X", should your $cwd be /a/b/c/X or should
it be what pwd would show?

Another way of looking at this: should the path by which you "arrive"
at a particular directory be the path by which you "leave" using ".."?
Or, should you (as is currently done) always leave by the real link
".."?  Since the C Shell keeps track of how you arrived at a directory,
it could behave either way.

I'm trying to resolve the confusion I feel when I "pass through" a
symbolic link (which I might not have been aware of) and then back up.
The C Shell is behaving half like my mind and half like pwd; thanks to a
bug in the directory resolution function, it sets $cwd as if you back up
along the path by which you got there, but it *really* backs up along
the real link ".." (resulting in complete confusion).

I am afraid that the C Shell will have to be fixed to conform to pwd,
since one wouldn't want "ls .." and "cd ..;ls" to behave differently.
This just means one gets a big surprise when passing through a
symbolic link.  (*sigh*)  Perhaps the shell will have to warn you when
this happens!
-- 
        -IAN!  (Ian! D. Allen)      University of Waterloo