staging.inyokaproject.org

Warum vervollständigt die command completion für docker auf .?

Status: Ungelöst | Ubuntu-Version: Server 16.04 (Xenial Xerus)
Antworten |

BillMaier Team-Icon

Supporter

Anmeldungsdatum:
4. Dezember 2008

Beiträge: 6497

Hallo,

ich habe hier ein etwas unerwartetes Verhalten mit der command-completion für ein Programm (docker) in bash:

Unmittelbar nach dem Login funktioniert die command completion. Wenn ich dann eine neue bash starte, fehlt die completion.

ssh docker1
Welcome to Ubuntu 16.04.3 LTS (GNU/Linux 4.4.0-101-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

66 packages can be updated.
0 updates are security updates.


Last login: Mon Nov 20 17:45:52 2017 from 192.168.253.1
root@docker1:~# docker 
attach     create     history    kill       node       push       save       stats      unpause    
build      diff       image      load       pause      rename     search     stop       update     
commit     events     images     login      plugin     restart    secret     swarm      version    
config     exec       import     logout     port       rm         service    system     volume     
container  export     info       logs       ps         rmi        stack      tag        wait       
cp         help       inspect    network    pull       run        start      top        
root@docker1:~# bash
root@docker1:~# docker .
./             .bash_history  .cache/        .profile       .viminfo       
../            .bashrc        .nano/         .ssh/          
root@docker1:~# grep -R docker /etc/bash_completion.d/
root@docker1:~# grep docker /etc/bash_completion
root@docker1:~# 

(Der Punkt hinter 'docker' nach dem 'bash' kommt aus der auto-completion, den habe ich nicht getippt)

Hat jemand eine Idee, wo ich die Definition der completion finden bzw. der Ursache auf die Spur kommen könnte?

Bearbeitet von sebix:

Bitte wähle in Zukunft einen aussagekräftigen Titel!

BillMaier Team-Icon

Supporter
(Themenstarter)

Anmeldungsdatum:
4. Dezember 2008

Beiträge: 6497

eine Lösung habe ich nun hier gefunden:

https://linuxconfig.org/tab-does-not-automatically-complete-docker-commands-solution

root@docker1:~# docker 
attach     create     history    kill       node       push       save       stats      unpause    
build      diff       image      load       pause      rename     search     stop       update     
commit     events     images     login      plugin     restart    secret     swarm      version    
config     exec       import     logout     port       rm         service    system     volume     
container  export     info       logs       ps         rmi        stack      tag        wait       
cp         help       inspect    network    pull       run        start      top        
root@docker1:~# bash
root@docker1:~# docker 
attach     create     history    kill       node       push       save       stats      unpause    
build      diff       image      load       pause      rename     search     stop       update     
commit     events     images     login      plugin     restart    secret     swarm      version    
config     exec       import     logout     port       rm         service    system     volume     
container  export     info       logs       ps         rmi        stack      tag        wait       
cp         help       inspect    network    pull       run        start      top  

Verstanden habe ich es nicht. Was macht das für einen Sinn, die completion in 'interactive shells' abgeschaltet zu haben?

misterunknown Team-Icon

Ehemalige
Avatar von misterunknown

Anmeldungsdatum:
28. Oktober 2009

Beiträge: 4403

BillMaier schrieb:

Verstanden habe ich es nicht. Was macht das für einen Sinn, die completion in 'interactive shells' abgeschaltet zu haben?

Ich verstehe nicht, was du meinst. Wenn du das Paket bash-completion erst installiert hast, dann ist selbiges natürlich nur für Shells aktiv, die nach der Installation gestartet werden. Nach dem Ab- und Anmelden sollte die Autovervollständigung also überall funktionieren.

BillMaier Team-Icon

Supporter
(Themenstarter)

Anmeldungsdatum:
4. Dezember 2008

Beiträge: 6497

misterunknown schrieb:

Wenn du das Paket bash-completion erst installiert hast, dann ist selbiges natürlich nur für Shells aktiv, die nach der Installation gestartet werden. Nach dem Ab- und Anmelden sollte die Autovervollständigung also überall funktionieren.

Das ist nicht das Problem. Die bash-completion ist bereits installiert. Scheinbar ist die Konfiguration (Link im letzten Beitrag) nötig, damit die command completion überall funktioniert.

Hier nochmal auf einem anderen Host (ohne die Konfigurations-Änderung)

root@docker2:~# apt install bash-completion 
Reading package lists... Done                                                                                       
Building dependency tree                                                                                            
Reading state information... Done                                                                                   
bash-completion is already the newest version (1:2.1-4.2ubuntu1.1).                                                 
0 upgraded, 0 newly installed, 0 to remove and 92 not upgraded.                                                     
root@docker2:~# docker 
attach     create     history    kill       node       push       save       stats      unpause                     
build      diff       image      load       pause      rename     search     stop       update                      
commit     events     images     login      plugin     restart    secret     swarm      version                     
config     exec       import     logout     port       rm         service    system     volume                      
container  export     info       logs       ps         rmi        stack      tag        wait                        
cp         help       inspect    network    pull       run        start      top                                    
root@docker2:~# bash
root@docker2:~# docker .                                                                                            
./             .bash_history  .cache/        .profile       .viminfo                                                
../            .bashrc        .nano/         .ssh/ 

misterunknown Team-Icon

Ehemalige
Avatar von misterunknown

Anmeldungsdatum:
28. Oktober 2009

Beiträge: 4403

BillMaier schrieb:

Das ist nicht das Problem. Die bash-completion ist bereits installiert. Scheinbar ist die Konfiguration (Link im letzten Beitrag) nötig, damit die command completion überall funktioniert.

Achso. Keine Ahnung, warum das nicht per Default an ist...

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13242

BillMaier schrieb:

Hat jemand eine Idee, wo ich die Definition der completion finden bzw. der Ursache auf die Spur kommen könnte?

Du kannst die Shell mal mitecho exit | bash -xi 2>f1 und mal mit echo exit | bash -xil 2>f2 starten um zu sehen, welche Dateien in welcher Reihenfolge gelesen werden. Dann machst Du ein diff -U5 f1 f2 | less und bekommst vielleicht heraus, wo die Unterschiede sind. Alternativ statt "x" mal "v" benutzen oder beide zusammen.

Antworten |