Bash选项卡补全在以前没有时将“〜”扩展为“ / home / ___”


13

以前,如果我输入~/biTab,它将变成~/bin。但是,今天它开始~/biTab变成/home/username/bin

我希望它是前者,但是我不确定发生了什么……我确实添加了一个脚本来编辑bash补全,但是我从我的脚本中删除了它,~./bashrc然后重新启动了服务器。

有谁知道会导致这种情况发生吗?还是我将其改回来?

编辑 所以我发现了可能导致这种情况的原因……与之相关/etc/bash_completion。当我这样做时bind -v,它显示波形符扩展已关闭。

因此,我认为如果我编辑此内容(有点像hack),它将消失。但这并不能真正满足任何要求-最初如何发生这种变化?我从未以的身份运行任何内容sudo,并且在多次关闭并重新启动后,此行为仍然存在。

Answers:


8

您没有提到正在使用什么发行版(请在问题中包括该信息),但是在系统上运行更新后,我看到了类似的行为。

我最好的猜测是,当您运行系统更新或自动运行时,更新了“ bash-completion”软件包,从而增加了此行为。在Red Hat衍生产品中,您可以在中找到软件包文档/usr/share/doc/PACKAGENAME。在我的中/usr/share/doc/bash-completion-1.3/CHANGES,新更改通过更改日志格式列出。

/etc/bash_completion您可以创建~/.inputrc禁用代字号扩展的方法,而无需进行修改(可能会在下一个软件包升级时被覆盖)。我确认bash_completion-1.3.6将在我的Fedora 16机器上兑现此荣誉。

set expand-tilde off

编辑

您的里程可能会随变化~/.inputrc。Bash的功能可能会覆盖您的行为,具体取决于您尝试完成的操作(例如,程序还是文件或目录)。这种讨论自动填入一个当上超级用户SE解决了类似的问题vim命令。在这种情况下,原始发布通过向其添加自定义功能解决了他的问题~/.bashrc


1
最后一点也取决于发行版。某些发行版(例如,Gentoo)实际上做了正确的事情,/etc如果更改了文件,则不会覆盖下面的文件。
njsg 2013年

1
红帽衍生产品也是如此。如果配置更改不是很关键,xxx则将调用替换配置文件文件;否则,将调用xxx.rpmnew该文件。如果配置的变化真正需要,那么原来被重命名xxx.rpmsave,并xxx从包中的文件。
vonbrand 2013年

expand-tilde不起作用,我最后只是从计算机上删除了进行扩展的代码。它可能会在系统升级时中断,但是:|
贾斯汀·L.
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.