【发布时间】:2015-09-08 16:42:40
【问题描述】:
在 shell (GNU bash, version 4.2.47(1)-release (x86_64-suse-linux-gnu)) 中,当我点击选项卡进行自动完成时,变量名完成后“$”被转义,但如果没有完成,那么它只是响起。例如
$ 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/bash.bashrc 中注释掉了/etc/share/bash-completion/bash_completion,它停止了$ 转义。所以它看起来像是某种完整的配置问题。
【问题讨论】:
-
向 SuSE 报告错误。
-
我不确定这是一个错误还是一个功能 :-( 我知道这很令人沮丧
-
为什么要关闭?我在 SO 上看到了无数的 shell 问题,其中一些确实与版本相关
-
许多题外话被忽视的事实并没有改变规则。这有几个原因——如果它是一个错误,你应该提交一个错误报告;它与编程没有直接关系;你不是在问如何在代码中解决这个问题。我也认为它是重复的,尽管我无法找到我之前看到的类似问题。
-
当然,np。我看到几个指针说这是一个错误。 (顺便说一句,我认为 SO 是一个活生生的生态系统,适当的用途是不断被社区完善。)
标签: bash bash-completion