Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于自动完成转义的bash选项卡$_Bash_Bash Completion - Fatal编程技术网

用于自动完成转义的bash选项卡$

用于自动完成转义的bash选项卡$,bash,bash-completion,Bash,Bash Completion,在shell(gnubash,版本4.2.47(1)-release(x86_64-suse-linux-GNU))中,当我点击tab进行自动完成时,变量名完成后会转义“$”,但如果没有完成,则只会发出铃铛声。例如 $ ls $JDK_H<tab> 在旧的GNUBash版本3.2.51(1)发行版(x86_64-suse-linux-GNU)上,它没有在完成后转义“$”,这正是我想要的 有没有一种方法可以让这种老行为不产生强烈的副作用?我的BASHOPTS和SHELLOPTS是:

在shell(
gnubash,版本4.2.47(1)-release(x86_64-suse-linux-GNU)
)中,当我点击tab进行自动完成时,变量名完成后会转义“$”,但如果没有完成,则只会发出铃铛声。例如

$ ls $JDK_H<tab>
在旧的GNUBash版本3.2.51(1)发行版(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
谢谢。我正在使用SLESSP11


--更新。其他补全操作似乎正常工作,例如,
cd
echo
不退出
$
。我还立即从我的
/etc/bash.bashrc
中注释掉了
/etc/share/bash completion/bash_completion
,它停止了$-转义。所以它看起来像是某种完整的配置问题

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

complete -r # temporarily disable all completion rules
shopt -s direxpand
指向邮件列表中报告的类似问题的链接:


向SuSE报告错误。我不确定这是错误还是功能:-(我知道这是非常令人沮丧的为什么关闭?我看到了无数的shell问题,因此,一些确实与版本相关。许多非主题问题未被注意的事实并没有改变规则。这是边界,有几个原因——如果它是一个bug,你应该提交一个bug报告;它与编程没有直接关系;而你是不是问如何在代码中解决这个问题。我也相信这是一个重复的问题,尽管我找不到我之前看到的类似问题。当然,np。我看到几个指针说这是一个bug。(顺便说一句,我认为这是一个活的生态系统,社区不断完善什么是合适的用途。)我看不到与我的bash 3有什么不同。我在
complete
下看到了大量的配置;所以我立即从
/etc/share/bash completion/bash\u completion
中注释了
/bashrc.bashrc
,现在
cd
就像
ls
一样工作。所以它看起来像某种
complete
配置问题忘记添加,
shopt-s direxpand
不会更改此行为。通过添加一些链接进行更新。感谢链接和提示。它声称问题已在4.2.45中解决,但我正在运行bash 4.2.47,并且仍然可以看到它。
complete -r # temporarily disable all completion rules
shopt -s direxpand