gpt4 book ai didi

用于自动完成转义的 bash 制表符 $

转载 作者:行者123 更新时间:2023-11-29 09:15:12 28 4
gpt4 key购买 nike

在 shell(GNU bash,版本 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。

--更新。其他完成似乎像往常一样工作,例如cdecho 不转义 $。我还暂时从停止 $-escaping 的 /etc/bash.bashrc 中注释掉了 /etc/share/bash-completion/bash_completion。所以它看起来像是某种完整的配置问题。

最佳答案

最近的 bash 版本引入了一些与此相关的兼容性问题。像这样尝试:

complete -r # temporarily disable all completion rules
shopt -s direxpand

报告给 bug-bash 的类似问题的链接邮件列表:

关于用于自动完成转义的 bash 制表符 $,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32463052/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com