我有两个系统,一个 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 的上游副本以在您的机器上运行。