我遇到了我以前的操作系统(Ubuntu Xenial)和我现在的操作系统(Ubuntu Bionic)之间的行为差异。
短篇小说是这样的:
当使用 tab 补全时cd
,tab 补全的顺序发生了变化。
为了演示这个问题,假设我有这个目录结构(所有目录):
/vagrant/hello
/vagrant/hello/web
/vagrant/hello/web/hello.com
我有CDPATH=.:/vagrant:/vagrant/hello/web
过去,cd hel<TAB>
显示hello
第一,hello.com
第二:
$ cd hel<TAB>
hello/ hello.com/
但是现在,它以相反的顺序显示,这是不可取的:
$ cd hel<TAB>
hello.com/ hello/
在我的控制之下,这两个版本之间没有任何变化。
更长的故事(仅供参考,我认为这无关紧要):
A)我是一个“重度用户” CDPATH
——这个订单变化完全打乱了我的节奏。
B)实际上,我正在使用这个.inputrc
文件,实际上是menu-complete
在选项卡上执行(上面的输出来自 Shift+Tab,这是正常的complete
)。
TAB: menu-complete
"\e[Z": complete
C)我尝试在干净的(Docker)环境中重现它,但我无法重现“坏”行为。
D)我尝试了一些变体之类menu-complete-backwards
的,但结果并不好。
E)我尝试了无数的CDPATH
值变化,包括改变顺序和:.
最后添加。
F)在执行cd something<TAB>
时,在选择当前目录中的目录之前,甚至似乎完成会支持不在当前目录中的目录 - 即使CDPATH
以点开头 -.:/other/paths
我不知道如何调试这个问题,非常感谢任何帮助。