Bash shell tab 补全,不要展开 ~

Bash shell tab 补全,不要展开 ~

Tab当我使用shell(bash)时我经常使用该键。

但我很恼火,它~总是被扩展为/home/"user"。我认为它并不总是这样;有什么办法可以阻止这种行为吗?

一个例子:

  1. cj@zap:~$ ls ~/
  2. Tab
  3. cj@zap:~$ ls /home/cj/

我希望能够继续拥有~/,而不是最终得到/home/cj/

答案1

禁用波浪线扩展非常快捷且轻松。打开~/.bashrc并插入以下内容:

_expand()
{
    return 0;
}

这将覆盖扩展函数/etc/bash_completion。我建议在函数上方注释其功能,以防将来需要扩展。更改将在新实例中生效。

答案2

使用较新的 bash_completion 似乎您还需要覆盖 __expand_tilde_by_ref:

__expand_tilde_by_ref() {
  return 0
}

答案3

更加紧凑:

_expand() { :; }

...因为“:”是 shell 内置的,相当于“true”:-)

答案4

更精确的定制将是

_filedir_xspec () { :; }

相关内容