Pourquoi faut-il autant de temps à Ubuntu pour dire «commande introuvable»

24

Pour une raison quelconque, avec ma configuration, cela peut prendre plusieurs secondes à Ubuntu pour répondre avec "commande introuvable" lorsque je tape accidentellement une commande. Pourquoi cela prend-il si longtemps? Existe-t-il un moyen de raccourcir la période de temps que je dois attendre?

J'ai 13 répertoires dans mon PATH, mais malgré cela (la plupart d'entre eux ne contiennent que quelques fichiers), cela ne devrait pas prendre plusieurs secondes pour rechercher 13 répertoires pour une commande, n'est-ce pas?

mltsy
la source

Réponses:

34

La coque fait plus que regarder $PATH. Si aucune commande n'est trouvée, la fonction bash command_not_found_handleest exécutée qui à son tour appelle le script python /usr/lib/command-not-found. Cela recherche dans la liste des packages les programmes qui doivent être installés pour que la commande fonctionne. Dans le cas d'une faute de frappe que vous savez résoudre, appuyez simplement sur Ctrl+ Cpour abandonner le processus de recherche.

Exemple de message utile pour une faute de frappe:

$ aptget update
No command 'aptget' found, did you mean:
 Command 'apt-get' from package 'apt' (main)
aptget: command not found

Exemple de message utile pour un paquet manquant:

$ deja-dup
The program 'deja-dup' is currently not installed.  You can install it by typing:
sudo apt-get install deja-dup

Voir également la justification derrière cela, https://wiki.ubuntu.com/CommandNotFoundMagic

Lekensteyn
la source
5
Linus a publié quelque chose à ce sujet: plus.google.com/u/0/102150693225130002912/posts/iz7zR9B1Prv
bcbc
Et je considère que c'est une fonctionnalité vraiment incroyable! Si vous utilisez une commande que vous pensez être présente mais qui n'est pas là, vous êtes directement informé du type à taper pour l'installer.
Thorbjørn Ravn Andersen
8

C'est à cause d'un package nommé "command-not-found". Vous pouvez le désinstaller pour raccourcir le temps de réponse.

dessinateur
la source