Странная разница в поведении bash в разных системах

Странная разница в поведении bash в разных системах

У меня две системы, компьютер Ubuntu и планшет Android. Я собрал и настроил bash для Android, чтобы использовать его в adb, так что это та же версия, что и мой Ubuntu bash, и они используют в основном тот же bashrc и конфигурацию, а также те же самые параметры, установленные shopt.

Однако есть небольшая разница: Android bash ведет себя так, как я и ожидал, когда я пытаюсь дополнить что-либо с помощью клавиши Tab, используя переменную, а 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 для запуска на своей машине.

Связанный контент