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

sho*_*lte 29 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在哪里我应该解决这个问题?

seh*_*ehe 31

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

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

解决方法

尝试启用direxpandcdable_vars:

shopt -s direxpand
# or
shopt -s cdable_vars
Run Code Online (Sandbox Code Playgroud)

显然EscTab可能是一种解决方法:

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

# cd $SO + [Esc] + [Tab]
# cd $SOME_DIR
Run Code Online (Sandbox Code Playgroud)

确认这是一个错误!我刚刚确认了同样的事情

No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 10.10
Release:        10.10
Codename:       maverick
Run Code Online (Sandbox Code Playgroud)

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

No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 11.04
Release:    11.04
Codename:   natty
Run Code Online (Sandbox Code Playgroud)

虽然我必须补充一点,我不会删除斜杠,但路径(虽然有效,现有,可访问和可读)不会扩展.

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


Kle*_*eag 9

bug报告在bugs.launchpad.net的其他答案中提到了通过发出命令给出了一个新的解决方法:

shopt -s direxpand
Run Code Online (Sandbox Code Playgroud)

这个对我有用.