[Bug 778627] Re: bash completion now quotes shell variable references rather than expanding them
thava
thavamuni at gmail.com
Fri Sep 13 15:43:57 UTC 2013
If the proposed fix requires setting direxpand variable, then that is
not a fix, it is a workaround fix. (something is better than nothing
though). Historical behaviour should not be changed and users must not
be expected to set this new variable. This is affecting so many people
and this is real pity.
--
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to bash in Ubuntu.
https://bugs.launchpad.net/bugs/778627
Title:
bash completion now quotes shell variable references rather than
expanding them
Status in “bash” package in Ubuntu:
Fix Released
Status in “bash” source package in Precise:
Fix Released
Status in “bash” source package in Quantal:
Fix Released
Status in “bash” source package in Raring:
Fix Released
Status in “bash” package in Debian:
Fix Released
Status in “bash” package in Fedora:
New
Bug description:
Binary package hint: bash
NB! NB! NB!
After applying the update to resolve this problem one _also_ must
enable direxpand option by issuing:
shopt -s direxpand
If you do not do this, the variable expansion will not happen.
NB! NB! NB!
[Impact]
Bash-4.2 tries to leave completed directory names as the user typed them,
without expanding them to a full pathname. One effect of this is that
shell variables used in pathnames being completed (e.g., $HOME) are left
unchanged, but the `$' is quoted by readline because it is a special
character to the shell.
[Test Case]
- [Current test case showing expected behavior]
Items to address so far:
- that $ is escaped less
- that direxpand does not expand as expected
- that direxpand option is available and if enabled, expands directories with variable names.
zef:~/Projects/precise-amd64$ mkdir -p /tmp/testd/finger/toe
zef:~/Projects/precise-amd64$ cd /tmp/testd/
zef:/tmp/testd$ td=`pwd`
zef:/tmp/testd$ cd ../
zef:/tmp$ ls \$td/finger
zef:/tmp$ shopt -s direxpand
zef:/tmp$ ls $td/fing<TAB>
zef:/tmp$ ls /tmp/testd/finger/
toe
- [Previous Test Case showing non-working bash installation]
~$ mkdir -p /tmp/testd/finger/toe
/tmp$ cd /tmp/testd
/tmp/testd$ td=`pwd`
/tmp/testd$ cd ../
/tmp$ ls $td/fing
Type a TAB character at this point, and bash completion makes the line:
/tmp$ ls \$td/finger
Note that while 'fing' has been expanded to 'finger ' (with a space at the end), the $td variable reference has had the
$ character quoted with a backslash. This prevents further extension of the pathname, and in fact makes
the command invalid; if I type a newline at this point, I get:
ls: cannot access $td/finger: No such file or directory
This is not useful behavior. I believe that in Ubuntu 10.10, the $td variable would have been expanded
to '/tmp/testd', and subsequent completions starting from '/tmp/testd/finger' would have worked.
[The version of /etc/bash_completion.d/acroread.sh that is installed
starts with:
# _filedir : to handle file and directories with spaces in their names.
if ! type _filedir &> /dev/null ; then
so I don't think that file is overriding /etc/bash_completion's
_filedir ...]
[Regression Potential]
- (#32) low potential for regressions since this bug is related to the interactive command line and would not influence any scripts.
ProblemType: Bug
DistroRelease: Ubuntu 11.04
Package: bash 4.2-0ubuntu3
ProcVersionSignature: Ubuntu 2.6.38-8.42-generic 2.6.38.2
Uname: Linux 2.6.38-8-generic x86_64
Architecture: amd64
Date: Fri May 6 09:48:29 2011
InstallationMedia: Ubuntu 9.10 "Karmic Koala" - Release amd64 (20091027)
ProcEnviron:
SHELL=/bin/bash
PATH=(custom, user)
LANG=en_US.UTF-8
LANGUAGE=en_US:en
SourcePackage: bash
UpgradeStatus: Upgraded to natty on 2011-04-30 (6 days ago)
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/bash/+bug/778627/+subscriptions
More information about the foundations-bugs
mailing list