跨系統的 bash 行為存在奇怪的差異

跨系統的 bash 行為存在奇怪的差異

我有兩個系統,一台 Ubuntu 電腦和一台 Android 平板電腦。我已經為 Android 建置並配置了 bash,以便在 adb 中使用,因此它與我的 Ubuntu bash 版本相同,並且它們使用大部分相同的 bashrc 和配置,以及 shopt 設定的完全相同的選項。

然而,有一個細微的差別,當我嘗試使用其中的變數來完成某些內容時,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 的上游副本以在您的電腦上運行。

相關內容