[manually resending after bashbug seems to have failed to send.]
Configuration Information [Automatically generated, do not change]: Machine: i686 OS: linux-gnu Compiler: gcc Compilation CFLAGS: -DPROGRAM='bash' -DCONF_HOSTTYPE='i686' -DCONF_OSTYPE='linux-gnu' -DCONF_MACHTYPE='i686-pc-linux-gnu' -DCONF_VENDOR='pc' -DLOCALEDIR='/var/local/akkartik/bash-3.1/install/share/locale' -DPACKAGE='bash' -DSHELL -DHAVE_CONFIG_H -I. -I. -I./include -I./lib -g -O2 uname output: Linux lutie.cs.utexas.edu 2.6.17.4 #1 SMP Wed Jul 12 14:41:00 CDT 2006 i686 GNU/Linux Machine Type: i686-pc-linux-gnu Bash Version: 3.1 Patch Level: 17 Release Status: release Description: If any part of cwd is a symlink, file completion when you try to navigate above that part follows the logical path. This is in conflict with all coreutils commands that use the physical path. --- In an ideal world I think bash's completion makes more sense than coreutils semantics. But after looking into coreutils sources and ext2 documentation (http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.17.11.tar.bz:Documentation/filesystems/ext2.txt or http://www.mjmwired.net/kernel/Documentation/filesystems/ext2.txt) I conclude that the 'logical path' is maintained only by the shell, not in the filesystem. If I'm right, then the whole notion of logical path is a leaky abstraction honored only by 'cd -L' [anybody else?]. I would really like to be told I'm wrong. Repeat-By: $ mkdir base_dir $ cd base_dir $ mkdir -p x/y $ ln -s x/y f $ cd f $ ls .. y ##### Testing out tab-completion $ ls ../<Tab> f x ##### stat("../f") returns ENOENT. $ cat > x.c #include<stdio.h> #include<sys/stat.h> #include<errno.h> struct stat buf ; int main () { printf ("%d %d\n", stat("../f", &buf), errno); } $ gcc x.c $ a.out -1 2 Kartik _______________________________________________ Bug-bash mailing list Bug-bash@gnu.org http://lists.gnu.org/mailman/listinfo/bug-bash