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

Adam Stokes adam.stokes at canonical.com
Mon Mar 18 21:40:32 UTC 2013


If anyone still has a reproducer environment setup with a patch bash
version on precise and can easily reproduce please feel free to do so
and alter the description above. In the meantime, Ill get a reproducer
setup and update the description once my test is done.

Thanks
Adam

** Description changed:

  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.
+ 
+ - [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 
+ /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:
+ [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]
+ 
  
  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
+  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)

** Changed in: bash (Ubuntu Precise)
       Status: Incomplete => In Progress

-- 
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:
  In natty, 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:
  In Progress
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

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

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

  
  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