[Bug 778627] [NEW] In natty, bash completion now quotes shell variable references rather than expanding them

Launchpad Bug Tracker 778627 at bugs.launchpad.net
Mon Mar 18 22:15:09 UTC 2013


You have been subscribed to a public bug by Adam Stokes (adam-stokes):

Binary package hint: bash

[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)

** Affects: bash (Ubuntu)
     Importance: Undecided
         Status: Fix Released

** Affects: bash (Ubuntu Precise)
     Importance: Undecided
         Status: In Progress

** Affects: bash (Ubuntu Quantal)
     Importance: Undecided
         Status: Fix Released

** Affects: bash (Ubuntu Raring)
     Importance: Undecided
         Status: Fix Released

** Affects: bash (Debian)
     Importance: Unknown
         Status: Fix Released

** Affects: bash (Fedora)
     Importance: Undecided
         Status: New


** Tags: amd64 apport-bug natty running-unity
-- 
In natty, bash completion now quotes shell variable references rather than expanding them
https://bugs.launchpad.net/bugs/778627
You received this bug notification because you are a member of Ubuntu Sponsors Team, which is subscribed to the bug report.



More information about the Ubuntu-sponsors mailing list