选项卡上的Bash变量扩展完成

时间:2011-06-20 22:55:44

标签: bash readline bash-completion

我正在运行Ubuntu 11.04,当我尝试在以变量开头的路径上使用bash中的tab-completion时,我会看到一些奇怪的行为。如果我有TOP = / scratch,我尝试tab-complete:

cd $ TOP / foo

它变为:

cd \ $ TOP / foo

我希望它完成: cd $ TOP / foobar 要么 cd / scratch / foobar 但我会满足于它只是不改变线,并要求我取消$。

有谁知道我应该在bash / readline中找到什么来解决这个问题?

3 个答案:

答案 0 :(得分:26)

发现错误报告,请注册(如果尚未注册)并将自己添加到“受影响人群”列表中,我刚刚做了:

https://bugs.launchpad.net/ubuntu/+source/bash/+bug/778627

变通方法

尝试启用direxpandcdable_vars

shopt -s direxpand
# or
shopt -s cdable_vars

显然是EscTab might be a workaround

  

我还没有找到合适的解决方案,但有一个解决方法。按Esc后跟选项卡可以禁用环境变量的转义。

# cd $SO + [Esc] + [Tab]
# cd $SOME_DIR

<子> 确认这是一个错误!我刚刚确认同样适用于

No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 10.10
Release:        10.10
Codename:       maverick

我对(最新)natty的行为破裂了:

No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 11.04
Release:    11.04
Codename:   natty

虽然我必须补充一点,我做 not 斜杠转义,但路径(虽然有效,现有,可访问和可读)没有得到扩展。

信息:https://help.ubuntu.com/community/ReportingBugs

答案 1 :(得分:8)

bugs.launchpad.net的其他答案中提到的错误报告通过发出命令提供了一种新的解决方法:

shopt -s direxpand

它对我有用。

答案 2 :(得分:0)

我在cygwin(NT-6.1 2.0.1 2015-04-30)bash(GNU 4.3.33)中遇到了类似的问题,特别是当我尝试使用制表符展开包含空格的路径时。

我把shopt -s direxpand放在〜/ .bashrc中。问题解决了。