Dlaczego Ubuntu tak długo mówi „nie znaleziono polecenia”

24

Z jakiegoś powodu, przy mojej konfiguracji, Ubuntu może potrzebować kilku sekund, aby odpowiedzieć „komenda nie została znaleziona”, gdy przypadkowo wpisałem komendę. Dlaczego to trwa tak długo? Czy jest jakiś sposób na skrócenie czasu, na który muszę czekać?

Mam 13 katalogów w mojej ŚCIEŻCE, ale mimo to (większość z nich ma tylko kilka plików), nie powinno zająć kilku sekund przeszukanie 13 katalogów w poszukiwaniu polecenia, prawda?

mltsy
źródło

Odpowiedzi:

34

Powłoka robi więcej niż tylko patrzenie $PATH. Jeśli polecenie nie zostanie znalezione, command_not_found_handlewykonywana jest funkcja bash, która z kolei wywołuje skrypt Pythona /usr/lib/command-not-found. Wyszukuje na liście pakietów programy, które powinny zostać zainstalowane, aby polecenie działało. W przypadku literówki, którą wiesz jak rozwiązać, po prostu naciśnij Ctrl+, Caby przerwać proces wyszukiwania.

Przykład przydatnej wiadomości dla literówki:

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

Przykład przydatnej wiadomości dla brakującego pakietu:

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

Zobacz także uzasadnienie tego, https://wiki.ubuntu.com/CommandNotFoundMagic

Lekensteyn
źródło
5
Linus opublikował coś na ten temat: plus.google.com/u/0/102150693225130002912/posts/iz7zR9B1Prv
bcbc
I uważam to za naprawdę niesamowitą funkcję! Jeśli użyjesz polecenia, które ma być obecne, ale go nie ma, zostaniesz bezpośrednio poinformowany, co wpisać, aby je zainstalować.
Thorbjørn Ravn Andersen
8

Jest tak z powodu pakietu o nazwie „polecenie nieznalezione”. Możesz go odinstalować, aby skrócić czas odpowiedzi.

rysownik
źródło