Seltsamer Unterschied im Bash-Verhalten zwischen den Systemen

Seltsamer Unterschied im Bash-Verhalten zwischen den Systemen

Ich habe zwei Systeme, einen Ubuntu-Computer und ein Android-Tablet. Ich habe Bash für Android erstellt und so konfiguriert, dass es in ADB verwendet werden kann. Es ist also dieselbe Version wie meine Ubuntu-Bash, und sie verwenden größtenteils dieselbe Bashrc und Konfiguration sowie genau dieselben von Shopt festgelegten Optionen.

Es gibt jedoch einen kleinen Unterschied: Die Android-Bash verhält sich wie erwartet, wenn ich versuche, mithilfe einer darin enthaltenen Variable etwas mit der Tab-Vervollständigung zu versehen, die Ubuntu-Bash tut dies jedoch nicht.

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

Grundsätzlich wird die Variable beim Ausfüllen berücksichtigt. Dann aber

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

Die Liste der Optionen lautet wie folgt und ist in beiden Bash-Builds identisch.

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

Was kann dazu führen, dass die Ubuntu-Version das $-Zeichen vermeidet, anstatt es wie im Android-Build zur Vervollständigung zu verwenden? Was kann ich tun, damit beide auf die gleiche Weise funktionieren? Für jede Hilfe bin ich sehr dankbar.

Antwort1

Das Bash-Paket 4.2-0ubuntu3 weist dieses Problem gemäß diesem Fehler auf:

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

Offenbar handelt es sich hierbei um ein Problem mit Bash selbst. Daher besteht Ihre Option derzeit darin, eine Upstream-Kopie von Bash herunterzuladen und zu kompilieren, um sie auf Ihrem Computer auszuführen.

verwandte Informationen