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.