On 2/24/11 5:14 PM, Michael Kalisz wrote:
Bash Version: 4.2
Patch Level: 0
Release Status: release
Description:
Hi!
Example:
In bash, version 4.1.5(1)-release:
$ echo $PWD/<TAB>
will expand the $PWD variable to your current directory
while in bash, version 4.2.0(1)-release:
$ echo $PWD/<TAB>
will just escape the $ in front of the $ variable i.e:
$ echo \$PWD/
The shell-expand-line (Ctrl-Alt-e) works but before I could use just TAB
Any hints why? Any way to get the 4.1 behavior in 4.2?
I wrote, in a subsequent message in a related thread:
The difference is that bash-4.1 expanded $HOME and left the expansion
as part of the replacement text. Bash-4.2 tries to leave what the
user typed alone, but that leads to an inherently ambiguous situation:
when do you quote the `$' in a filename (or, in this case, a directory
name)? It could be a shell variable, and it could be a character in
the filename.
That is the problem, in a nutshell. I posted a partial patch at the
end of March that applied a heuristic to avoid quoting variable
expansions in most cases, but there was no way to get the bash-4.1
behavior back.
The attached patch adds a new shell option that, when enabled, is
intended to restore the bash-4.1 behavior of expanding directory names
in filenames being completed. I have done some testing, and it seems
to work the way I intend. This, or some later version, will be part
of the next bash release. I am soliciting feedback on this iteration.
I'm sending this directly to everyone who's commented negatively about
the default bash-4.2 behavior, as well as bug-bash. Please try the new
option (`direxpand') and let me know if it's missing anything. The patch
includes the original heuristic I sent out back in March, the new shopt
option, and updates to the documentation and test suite. It should apply
cleanly to bash-4.2.10.
Chet