Ulrik S. Kofod wrote: > I don?t understand why ".." isn?t working the same way for "ls" and "cd" when inside > a symbolic link. "cd" is shell builtin that attempts to be (too) smart. Since it is shell builtin, it is able to remember where you think you are. There is an extra code to implement this feautre. "pwd" builtin also behaves the same. Try "pwd" followed by "/bin/pwd" to see the difference. Former will return shell's best guess where you thing you are (and really this is just a best guess). Later will return where you actually are. While bash implements "ls" as shell builtin too, it does not attempt to be "smart". When you do "ls .." it will simly read entry for ".." in the actual file system structure which is going to point one directory up from your actual position in file system. Same goes for /bin/ls (which is a binary), or any other binary on the system, that has no reliable way of knowing where you think you are (unlike shell builtins that have the luxury of history). See the pwd example described earlier. No, $PWD is not reliable way of knowing where you think you are. $PWD is set by particular shell, and different shells handle it differently (if they define it at all). Program that would rely on it would produce different results for users of different shells. Not a good thing. Something like this would make your script work without creating links for every possible file, buy you better make sure $PWD is set the way you want it to be set by the interpretter that executes your script, and that interpretter acutally inherits value of $PWD that was set by calling shell: $ mkdir -p a/b/c/d $ ln -s ./a/b/c/d . $ cd d $ ls -l `dirname "$PWD"` $ echo test > "`dirname "$PWD"`/test" Or more complicated way that does not rely on existance and/or correctness of $PWD: $ mkdir -p a/b/c/d $ ln -s ./a/b/c/d . $ ln -s ../../../.. ./a/b/c/d/up $ cd d $ pwd /tmp/d $ /bin/pwd /tmp/a/b/c/d $ ls -l up/. $ echo test > ./up/test $ cd - $ cat test -- Aleksandar Milivojevic <amilivojevic@xxxxxx> Pollard Banknote Limited Systems Administrator 1499 Buffalo Place Tel: (204) 474-2323 ext 276 Winnipeg, MB R3T 1L7