在bash中,环境变量在放置在echo命令后会正确展开,例如:
echo $HOME
但是在cd或cat之后,bash在$符号之前放置一个\,就像这样:
cd \$HOME
如果我使用变量作为命令的第二个参数,它根本不会扩展:
cp somefile $HOM
我的.bashrc或.inputrc文件中有什么神秘的选项会导致我这么痛苦?
答案 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扩展。