在bash中,环境变量没有正确扩展选项卡

时间:2008-09-19 16:09:53

标签: bash unix keyboard-shortcuts

在bash中,环境变量在放置在echo命令后会正确展开,例如:

echo $HOME

但是在cd或cat之后,bash在$符号之前放置一个\,就像这样:

cd \$HOME

如果我使用变量作为命令的第二个参数,它根本不会扩展:

cp somefile $HOM

我的.bashrc或.inputrc文件中有什么神秘的选项会导致我这么痛苦?

6 个答案:

答案 0 :(得分:5)

您所描述的是“功能”introduced in bash 4.2。所以你没有任何神秘的选择让你感到苦恼,而只是“有意”的行为。

我发现这非常烦人,因为我以前的方式喜欢它,并且还没有找到任何配置选项来恢复之前的行为。按照其他答案的建议使用complete选项并没有让我随时随地。

答案 1 :(得分:4)

尝试 complete -r cd 以删除许多Linux发行版为cd命令安装的特殊编程完成功能。该函数将查找CDPATH变量中指定的目录列表添加到cd的选项卡完成,但代价是打破默认的完成行为。

有关更多详细信息,请参阅http://www.gnu.org/software/bash/manual/bashref.html#Programmable-Completion

答案 2 :(得分:3)

对于第二个实例,您可以在选项卡前按ESC键来解决它。

我不知道您的问题的解决方案,但您可以查看 / etc / bash_completion /etc/bash_completion.d 下的文件来确定命令使用自动完成以及如何使用。

help complete

也可能会有帮助。

答案 3 :(得分:1)

The Bash Reference Manual提供的信息比扩展勘误表中的信息要多。

Section 8.7看起来像是开始的地方。它提供了有关“完整”功能的信息,等等。

答案 4 :(得分:0)

我正在回答4岁的问题!奇妙!

这是一个bash bug / feature,它是在v4.2中无意中引入的,并且很长一段时间没有被注意到。 geirha在this tread中指出了这一点。确认为非预期功能here

我在家里运行Ubuntu时遇到了这个问题。在工作中我有bash-3.00,所以我花了一些时间浏览看看发生了什么。我想知道我是否可以'降级'....

答案 5 :(得分:0)

检查答案 德米特里亚历山德罗夫https://superuser.com/questions/434139/urxvt-tab-expand-environment-variables

  

这是关于direxpand选项。 $ shopt -s direxpand $FOO_PATH/将由TAB扩展。