在shell(GNU bash, version 4.2.47(1)-release (x86_64-suse-linux-gnu)
)中,当我点击选项卡进行自动完成时,“$”在变量名完成后被转义,但是如果没有完成,那么它只是响铃。 E.g。
$ ls $JDK_H<tab>
结果
$ ls \$JDK_HOME (with a trailing space)
在一个旧的GNU bash,版本3.2.51(1)-release(x86_64-suse-linux-gnu)中,它在完成后没有逃脱“$”,这是我想要的。
有没有办法在没有强烈副作用的情况下获得旧的行为?我的BASHOPTS和SHELLOPTS是:
# (indented for readability)
BASHOPTS=checkwinsize:cmdhist:expand_aliases:extglob:extquote
:force_fignore:histappend:interactive_comments:login_shell
:progcomp:promptvars:sourcepath
SHELLOPTS=braceexpand:emacs:hashall:histexpand:history
:interactive-comments:monitor
感谢。我正在使用SLES SP11。
- UPDATE。其他完成似乎照常工作,例如cd
或echo
无法逃脱$
。我也暂时从我的/etc/share/bash-completion/bash_completion
注释掉了/etc/bash.bashrc
,它停止了$ -escaping。所以它看起来像某种完整的配置问题。
答案 0 :(得分:1)
最近的bash版本引入了一些与此相关的兼容性问题。试试这样:
complete -r # temporarily disable all completion rules
shopt -s direxpand
报告给bug-bash邮件列表的类似问题的链接: