On 10 April 2013 14:48, Ladios Jonquil <[email protected]> wrote:
> Actually, most defined completions would add '\' in front of '$'. It only 
> works when the command has no completion defined, for instance, the `ll` 
> alias does.
> Don't know what went wrong. I think I have to go for the direxpand option.
>

Did you enable direxpand option?

$ shopt -s direxpand

All this SRU does is backport "direxpand" option and leaves it
disabled by default. One must enable it, if variable expansion is
desired.

Regards,

Dmitrijs.


** Description changed:

  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)

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/778627

Title:
  bash completion now quotes shell variable references rather than
  expanding them

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/bash/+bug/778627/+subscriptions

-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to