Bash shell选项卡完成,请勿展开〜


12

使用Tabshell(bash)时,我经常使用该键。

但是我~总是扩展到感到恼火/home/"user"。我不认为总是这样。有什么办法可以阻止这种行为?

一个例子:

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

我想继续拥有~/而不是最终得到/home/cj/


2
“我不认为总是这样。” -可编程完成会覆盖读取行设置set expand-tilde off(默认设置或~/.inputrc)。
暂停,直到另行通知。

“ bind -v | grep波浪号”返回“设置扩展波浪号关闭” ...所以我认为这无济于事。
约翰

您可能会看看shopt -p direxpand
gam3

Answers:


10

禁用代字号扩展既快速又轻松。打开~/.bashrc并插入以下内容:

_expand()
{
    return 0;
}

这将覆盖的扩展功能/etc/bash_completion。我建议您对功能上方的功能进行评论,以备将来扩展。更改将在新实例中生效。


虽然_expand(){ true; }更短:)
tig

不是_expand(){ false; }吗?@tig
John T 2010年

2
@约翰:不,这应该是真的。true返回成功结果,并且成功结果为0,因此return 0等于true退出状态,并且return 1等于false。只是尝试true; echo $?false; echo $?
TIG

@tig太多的编程使我感到困惑... codepad.org/Frb3RyAN 同样,您可以在很多代码中找到它(请参见顶部):cs.nthu.edu.tw/~tingting/DS_mid_solution.pdf 我认为它已打开在GNU工具中表示更真实的含义,即“正确,程序成功运行”或“错误-程序运行不正确”。
约翰·T

@John:没关系:),«即使John T也可能是错的»(不要冒犯:))
tig

5

使用更新的bash_completion似乎还需要重写__expand_tilde_by_ref:

__expand_tilde_by_ref() {
  return 0
}

1

更紧凑:

_expand() { :; }

... as“:”是shell内置的等效于“ true” :-)


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.