我正在运行Ubuntu 11.04,当我尝试在以变量开头的路径上使用bash中的tab-completion时,我会看到一些奇怪的行为。如果我有TOP = / scratch,我尝试tab-complete:
cd $ TOP / foo
它变为:
cd \ $ TOP / foo
我希望它完成: cd $ TOP / foobar 要么 cd / scratch / foobar 但我会满足于它只是不改变线,并要求我取消$。
有谁知道我应该在bash / readline中找到什么来解决这个问题?
答案 0 :(得分:26)
发现错误报告,请注册(如果尚未注册)并将自己添加到“受影响人群”列表中,我刚刚做了:
https://bugs.launchpad.net/ubuntu/+source/bash/+bug/778627
尝试启用direxpand
或cdable_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 斜杠转义,但路径(虽然有效,现有,可访问和可读)没有得到扩展。
答案 1 :(得分:8)
答案 2 :(得分:0)
我在cygwin(NT-6.1 2.0.1 2015-04-30)bash(GNU 4.3.33)中遇到了类似的问题,特别是当我尝试使用制表符展开包含空格的路径时。
我把shopt -s direxpand
放在〜/ .bashrc中。问题解决了。