- Abraxas - http://www.effinger.org/blog -

Befehlsvervollständigung mit bash unter gentoo

Ein sehr praktisches Feature ist es beim Arbeiten mit der bash-Shell Befehle über die Tab-Taste automatisch zu vervollständigen. Unter gentoo lässt sich das erreichen, indem man zunächst mit einem

emerge -av bash-completion gentoo-bashcomp

die erforderliche Pakete bash-completion (allgemeine Bash-Befehlsvervollständigungen) und gentoo-bashcomp (spezifische Befehlsvervollständigungen für gentoo) installiert. Sofern nicht gesetzt, muss man auch das bash-completion USE flag in der Datei /etc/portage/make.conf ergänzen und dann eine Systemaktualisierung durchführen [1].

Danach bindet man die Befehlsvervollständigung in die systemweite Bash-Konfigurationsdatei /etc/bash/bashrc durch Ergänzen der Zeilen

# enable bash-completion
[[ -f /etc/profile.d/bash-completion.sh ]] && source /etc/profile.d/bash-completion.sh

ein und aktiviert sie systemweit mit einem

eselect bashcomp enable --global gentoo

Da es für verschiedene Programme Befehlsvervollständigungen gibt, muss man noch festlegen, für welche dies genau erfolgen soll. Eine entsprechende Liste erhält man mit

eselect bashcomp list

Jeder Benutzer kann nun für sich die einzelnen Listeneinträge aktiveren. Dazu wird das Verzeichnis ~/.bash_completion.d/ angelegt mit

mkdir ~/.bash_completion.d/

In dieses Verzeichnis erstellt man nun symbolische Links zu den einzelnen Dateien im Verzeichnis /usr/share/bash-completion, die bash eine Befehlsvervollständigung ermöglichen. Will man alle Befehlsvervollständigungen aktivieren, so erreicht man dies mit einem

for x in /usr/share/bash-completion/*; do [[ -e $x ]] || continue; ln -s -- "$x" "${HOME}/.bash_completion.d/${x##*/}"; done

Beim Start einer neuen Shell oder beim Laden der neuen Konfigurationsdatei mit einem

source /etc/bash/bashrc

sollten sich nun durch die tab-Taste die Befehle vervollständigen lassen.