不同系统间的 bash 行为存在奇怪差异

不同系统间的 bash 行为存在奇怪差异

我有两个系统,一个 Ubuntu 电脑和一个 Android 平板电脑。我已经为 Android 构建并配置了 bash 以用于 adb,因此它与我的 Ubuntu bash 是同一版本,并且它们使用大部分相同的 bashrc 和配置,以及 shopt 设置的完全相同的选项。

但是,稍有不同,当我尝试使用 Android bash 中的变量来按制表符完成某些操作时,Android bash 的行为与我预期的一致,而 Ubuntu bash 却不是这样。

 #Android
 ls $HOME/loc<tab> => ls $HOME/local #As expected

基本上,在完成时会考虑该变量。但随后

#Ubuntu
ls $HOME/loc<tab> => ls \$HOME/loc #Undesired behavior.

选项列表如下,并且在两个版本的 bash 中都是相同的。

autocd:checkwinsize:cmdhist:expand_aliases:extglob:extquote:force_fignore:histappend:interactive_comments:progcomp:promptvars:sourcepath

什么可以让 Ubuntu 版本转义 $,而不是像 Android 版本那样使用它来完成?我该怎么做才能让两者以相同的方式工作?任何帮助都将不胜感激。

答案1

bash 包 4.2-0ubuntu3 出现了这个问题,根据这个错误:

https://bugs.launchpad.net/ubuntu/+source/bash/+bug/778627/

显然,这是 bash 本身的问题,所以现在,您的选择是下载并编译 bash 的上游副本以在您的机器上运行。

相关内容