システム間での bash の動作の奇妙な違い

システム間での bash の動作の奇妙な違い

私は Ubuntu コンピューターと Android タブレットの 2 つのシステムを持っています。adb で使用するために Android 用の bash を構築して構成したので、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

Android ビルドのように補完に $ を使用するのではなく、Ubuntu バージョンで $ をエスケープさせるにはどうすればよいですか? 両方を同じように動作させるにはどうすればよいですか? ご協力いただければ幸いです。

答え1

bash パッケージ 4.2-0ubuntu3 では、次のバグのようにこの問題が発生します。

バグ:

どうやらこれは bash 自体の問題であるため、現時点では、bash のアップストリーム コピーをダウンロードしてコンパイルし、マシンで実行することが選択肢となります。

関連情報