我正在运行 Ubuntu 11.04,当我尝试在以变量开头的路径上使用 bash 中的制表符完成时,我看到了一些奇怪的行为。如果我有 TOP=/scratch,我尝试制表符完成:
cd $TOP/foo
它变为:
cd \$TOP/foo
我希望它完成为: cd $TOP/foobar 或 cd /scratch/foobar 但我会接受它,只是不改变行并要求我取消转义 $。
有谁知道我应该在 bash/readline 的哪个位置解决这个问题?
我正在运行 Ubuntu 11.04,当我尝试在以变量开头的路径上使用 bash 中的制表符完成时,我看到了一些奇怪的行为。如果我有 TOP=/scratch,我尝试制表符完成:
cd $TOP/foo
它变为:
cd \$TOP/foo
我希望它完成为: cd $TOP/foobar 或 cd /scratch/foobar 但我会接受它,只是不改变行并要求我取消转义 $。
有谁知道我应该在 bash/readline 的哪个位置解决这个问题?
找到错误报告,请注册(如果尚未注册)并将自己添加到“受影响的人”列表中,我刚刚做了:
https://bugs.launchpad.net/ubuntu/+source/bash/+bug/778627
尝试启用direxpand
或cdable_vars
:
shopt -s direxpand
# or
shopt -s cdable_vars
我还没有找到合适的解决方案,但是有一个解决方法。可以通过按 Esc 和 Tab 来禁用环境变量的转义。
# 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
虽然我必须补充一点,我没有转义斜线,但路径(虽然有效、现有、可访问和可读)没有得到扩展。
我在 cygwin (NT-6.1 2.0.1 2015-04-30) bash (GNU 4.3.33) 中遇到了类似的问题,尤其是当我尝试对包含空格的路径进行制表符扩展时。
我放入shopt -s direxpand
了我的 ~/.bashrc。问题解决了。