命令行 - 在tab补全中,如何让bash停止转义$?

分享于 

2分钟阅读

ubuntu

  繁體

问题:

我把这个放在命令行上:

 
ln -sf $PWD/wine-



然后按Tab键完成文件名,但它变成了

 
ln -sf $PWD/wine-



这是当前设置:


BASHOPTS=checkwinsize:cmdhist:expand_aliases:extquote:force_fignore:hostcomplete:interactive_comments:progcomp:promptvars:sourcepath


SHELLOPTS=braceexpand:emacs:hashall:histexpand:history:interactive-comments:monitor




答案1:

我发现bash 4.2.29版本有一个新的direxpand shopt设置,

 
shopt -s direxpand



解决方法:同时按Ctrl+Alt+E。


答案2:

 
shopt -u progcomp




答案3

_filedir()脚本中搜索bash_completion,并更改行


compopt -o filenames 2>/dev/null




compopt -o filenames -o noquote 2>/dev/null




答案4

可以使用~+而不是$PWD。

例如:


cd /bin


echo ~+/ls


/bin/ls




答案5

即使使用更新的bash,我发现$仍然被转义。

  • 删除bash-completion (1:2.1-3.fc20)软件包
  • 或者不从~/.bashrc source,在/etc/bashrc似乎可以解决此问题。
  • /etc/bashrc之前添加export BASH_COMPLETION_VERSINFO=0



    COM  COMM  Comma  tab  命令行  BASH