Warum dauert es so lange, bis Ubuntu "Befehl nicht gefunden" sagt

24

Aus irgendeinem Grund kann es bei meinem Setup einige Sekunden dauern, bis Ubuntu mit "Befehl nicht gefunden" antwortet, wenn ich versehentlich einen Befehl eingebe. Warum dauert es so lange? Gibt es eine Möglichkeit, die Wartezeit zu verkürzen?

Ich habe zwar 13 Verzeichnisse in meinem PATH, aber trotzdem (die meisten haben nur ein paar Dateien) sollte es nicht einige Sekunden dauern, bis 13 Verzeichnisse nach einem Befehl durchsucht sind, oder?

mltsy
quelle

Antworten:

34

Die Muschel kann mehr als nur hineinschauen $PATH. Wird ein Befehl nicht gefunden, wird die Bash-Funktion command_not_found_handleausgeführt, die ihrerseits das Python-Skript aufruft /usr/lib/command-not-found. Dadurch wird in der Paketliste nach Programmen gesucht, die installiert werden müssen, damit der Befehl ausgeführt werden kann. Bei einem Tippfehler, den Sie zu lösen wissen, drücken Sie einfach Ctrl+ C, um den Suchvorgang abzubrechen.

Beispiel einer nützlichen Nachricht für einen Tippfehler:

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

Beispiel einer nützlichen Nachricht für ein fehlendes Paket:

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

Siehe auch die Begründung dahinter, https://wiki.ubuntu.com/CommandNotFoundMagic

Lekensteyn
quelle
5
Linus hat etwas dazu gepostet: plus.google.com/u/0/102150693225130002912/posts/iz7zR9B1Prv
bcbc
Und ich halte dies für eine wirklich erstaunliche Funktion! Wenn Sie einen Befehl verwenden, von dem Sie erwarten, dass er vorhanden ist, der jedoch nicht vorhanden ist, wird Ihnen direkt mitgeteilt, was Sie eingeben müssen, um ihn zu installieren.
Thorbjørn Ravn Andersen
8

Es liegt an einem Paket mit dem Namen "command-not-found". Sie können es deinstallieren, um die Antwortzeit zu verkürzen.

Karikaturist
quelle