Hi @ all,
Also, ich nutze die JeOS-Variante von Ubuntu 8.04 Hardy Heron (also die VM-Variante, mit Updates auf dem neuestem Stand) und komme mit dem "complete"-Befehl in der Konsole nicht klar.
Folgendes: Innerhalb einer Bash-Shell möchte gerne - wie man es bei RedHat-Distros gewöhnt ist - einen "service"-Befehl. Dieser Befehl sollte netterweise eine Tab-Vervollständigung innerhalb des Verzeichnisses /etc/init.d bieten (sprich: Tippe ich "service " ein und drücke zweimal Tab-Taste, sollte die Shell mir eine Auflistung aller darin befindlichen Skripte zurückgeben - genauso, als würde ich mich in dem Verzeichnis gerade befinden).
"service" ist eine function, die ich in der /etc/bash.bashrc eingetragen habe. Die Funktion ansich funktioniert auch tadellos, aber jeglicher Versuch, mittels "complete"-Befehl eine Autovervollständigung in genanntem Verzeichnis zu erreichen, scheiterten. Ich habe keine Ahnung warum, die Syntax müsste korrekt sein^^.
folgende Zeilen habe ich in die /etc/bash.bashrc hinzugefügt (sicherheitshalber auch die genannte Funktion, wichtig ist aber nur die letzte Zeile):
1 2 3 4 5 6 7 8 9 10 11 | function service { test -z "$2" || test -z "$1" && \ echo "Usage: service <service-name> <command>" && \ echo "Example: service cron stop" && \ return "/etc/init.d/$1" "$2" } complete -f -X '!/etc/init.d/*' service |
Wenn ich mittels "complete -p" nachschaue, sehe ich auch, dass dieser Autovervollständigungs-Typ eingetragen ist. Trotzdem benimmt sich "complete" so, als hätte ich den Befehl nie eingetippt: Bei "service " + TAB listet er mir nur das aktuelle Verzeichnis auf, in dem ich mich gerade befinde (statt /etc/init.d/)...
Was mache ich falsch? Suchfunktion, Wiki u. Google brachten leider keine Antworten...