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