I want the logical view, and I think there is one by now. But there is a file missing in the logical directory, when cd ../ is completed from a symlink.
~/projects/art/dev$ ls -la drwxr-xr-x 6 art art 4096 2012-02-24 16:21 .bzr lrwxrwxrwx 1 art art 18 2012-04-16 14:48 lib -> ../../hth/dev/lib/ drwxr-xr-x 2 art art 4096 2012-02-24 16:21 src ~/projects/art/dev$ cd lib/../ .bzr/ lib/ I have made a test directory, to analyse the problem: ~/a$ ls -la drwxr-xr-x 5 art art 4096 2012-04-19 14:50 . drwxr-xr-x 80 art art 4096 2012-04-19 14:48 .. drwxr-xr-x 2 art art 4096 2012-04-19 14:48 .hidden drwxr-xr-x 2 art art 4096 2012-04-19 14:50 .java lrwxrwxrwx 1 art art 7 2012-04-19 14:48 symlink -> ../test ~/a$ cd symlink/../ hitting Tab gives: ~/a$ cd symlink/../.java/ It seems that .hidden and .java are treated differently, just because .java indeed exists in ../test/.., i.e. .., as opposed to .hidden. If *either* a/.java or ../.java were removed, the completion would not work. So, it looks as if the completion was allowed only to a logical AND between files in the physical and in the logical directory. I use the version 4.2.8(1)-release (x86_64-pc-linux-gnu).