在shell(
导致
GNU bash,version 4.2.47(1)-release (x86_64-suse-linux-gnu)
)中,当我按tab键进行自动补全时,变量名完成后"$"会被转义,但如果没有自动补全,则会发出提示音。例如:$ 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。
--更新。其他自动完成似乎像平常一样工作,例如cd
或echo
不会转义$
。我也暂时注释了/etc/share/bash-completion/bash_completion
从我的/etc/bash.bashrc
中,这停止了$的转义。所以看起来像是某种完整的配置问题。