Am 04.04.2020 um 14:02 schrieb Markus Schaaf:
> On 03.04.20 17:37, Stefan Reuther wrote:
>> Ich benutze gar keine bash-completions, da ist das die
>> Standardeinstellung, schon, damit man bei "PATH=/usr" oder "make
>> PREFIX=/opt" Completion hat. Insofern würde ich behaupten, dass da
>> irgendeine Standardregel konfiguriert ist, die *ab*geschaltet werden muss.
>
> Ich habe mich jetzt doch durch /usr/share/bash-completion/ gelesen und
> nun leichte Kopfschmerzen. Ich glaube nicht, dass Du keine
> bash-completion installiert hast.
Installiert ja, aber nicht aktiv. Ich habe halt - nachdem ich mehr
dagegen gekämpft habe als Gewinn daraus gezogen - den Block, der die
Completions aktiviert, aus der bashrc entfernt. Was nutzt es mir, wenn
ich das 'diff' in 'cvs diff' komplettieren kann (was nicht nötig ist, da
'cvs' auch mit 'di' zufrieden ist), aber den dahinterstehenden
Dateinamen nicht?
> PATH=/ macht bash intern, aber make BLA=/ braucht etwas Magie.
Wie gesagt, das ist die Defaultregel wenn gar keine Completion aktiv
ist. Mal damit rumgespielt:
complete make true
make BLA=/<tab> # keine Reaktion
complete -r make
make BLA=/<tab> # bin/ dev/ etc/ home/ lib/ ...
Und das gleiche mit der Defaultregel
complete -D true
ls /<tab> # keine Reaktion
make BLA=/<tab> # keine Reaktion
complete -rD
ls /<tab> # bin/ dev/ etc/ home/ lib/ ...
make BLA=/<tab> # bin/ dev/ etc/ home/ lib/ ...
Insofern würde ich konstatieren: ein 'complete -rD' ans Ende der
Nutzer-bashrc geschrieben (hinter die Stelle, wo '/etc/bash_completion'
usw. geladen werden) sollte für unbekannte Kommandos das
Standardverhalten wiederherstellen, wo nach einem '=' ein Dateiname
akzeptiert wird.
Stefan