使用bind破坏shell

使用bind破坏shell

(WSL 与 Ubuntu 18.04)

我有一些我以前使用过的配置设置,可以在互联网上的各个地方看到推荐的配置设置(更不用说 SO 了)。我已将它们放入.inputrc我的家庭位置的文件中。

$include /etc/inputrc

# better tab completion
bind "set show-all-if-ambiguous on"
bind "set completion-ignore-case on"

# disable bell
bind "set bell-style none"

# make tab completion treat links as directories
# i.e. adds trailing slash when <tab>-ing
set mark-symlinked-directories on

我不清楚为什么bind使用或不使用这些。网上说是图书馆bind用的readline。网上也说.inputrc是针对的readline。所以他们应该一起工作,对吗?

但是当我使用这些疯狂的事情开始在购买终端(WSL)中发生。

在一种情况下(禁用铃声),每当我在提示符下输入超过 N 个字母时,bash 就会开始set一遍又一遍地吐出。

外壳印刷一遍又一遍

在另一种情况下(制表符补全),它会在我输入每个字符后输出“设置补全忽略大小写”。

shell 在字符后打印配置设置

如果我删除 和 引号,奇怪的行为就会停止bind,所以我不需要知道如何来阻止这种行为。我想了解为什么有时候是这样的。有人知道这是怎么回事吗?

答案1

感谢@Kusalanada 的评论,我突然明白了,那bind就是巴什内置于readline.与配置.inputrc一样readline,它不需要也不知道 bash 内置命令。

这就是为什么bind在 中需要.bashrc,但在 中不需要.inputrc

相关内容