15

在 bash 中,环境变量在 echo 命令之后会正确地进行制表符扩展,例如:

echo $HOME

但是在 cd 或 cat 之后,bash 在 $ 符号之前放置一个 \,如下所示:

cd \$HOME

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

cp somefile $HOM

我的 .bashrc 或 .inputrc 文件中有什么神秘的选项让我如此痛苦?

4

6 回答 6

5

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

我觉得这很烦人,因为我喜欢它以前的方式并且还没有找到任何配置选项来恢复早期的行为。使用complete其他答案建议的选项并没有让我到任何地方。

于 2011-07-27T17:08:17.577 回答
4

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

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

于 2008-09-21T03:38:03.767 回答
3

对于第二种情况,您可以在 tab 之前按 ESC 来解决它。

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

help complete

也可能会有所帮助。

于 2008-09-19T16:28:14.120 回答
1

Bash 参考手册提供的关于扩展勘误表的信息比您想要的更多。

第 8.7 节看起来应该是开始的地方。它提供有关“完整”功能的信息等。

于 2008-09-19T17:32:22.250 回答
1

检查 Dmitry Alexandrov的https://superuser.com/questions/434139/urxvt-tab-expand-environment-variables的答案:

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

于 2017-02-19T11:41:25.060 回答
0

我正在回答4岁的问题!极好的!

这是在 v4.2 中无意引入的 bash 错误/功能,并且在很长一段时间内都未被注意到。geirha在这一步中指出了这一点。在此处确认为意外功能

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

于 2012-08-20T02:16:55.113 回答