[Resending for third time.]
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