Mengapa butuh waktu lama untuk Ubuntu untuk mengatakan "perintah tidak ditemukan"

24

Untuk beberapa alasan, dengan pengaturan saya, Ubuntu dapat membutuhkan beberapa detik untuk merespons dengan "perintah tidak ditemukan" ketika saya tidak sengaja mengetik perintah. Kenapa butuh waktu lama? Apakah ada cara untuk mempersingkat jangka waktu yang harus saya tunggu?

Saya memang memiliki 13 direktori di PATH saya, tetapi meskipun demikian (kebanyakan dari mereka hanya memiliki beberapa file di dalamnya), seharusnya tidak perlu beberapa detik untuk mencari 13 direktori untuk sebuah perintah, bukan?

mltsy
sumber

Jawaban:

34

Shell tidak lebih dari sekedar melihat ke dalam $PATH. Jika suatu perintah tidak ditemukan, fungsi bash command_not_found_handledieksekusi yang pada gilirannya memanggil skrip python /usr/lib/command-not-found. Ini mencari dalam daftar paket untuk program yang harus diinstal untuk perintah untuk bekerja. Dalam kasus salah ketik yang Anda tahu bagaimana menyelesaikannya, cukup tekan Ctrl+ Cuntuk membatalkan proses pencarian.

Contoh pesan yang berguna untuk salah ketik:

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

Contoh pesan yang berguna untuk paket yang hilang:

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

Lihat juga alasan di balik ini, https://wiki.ubuntu.com/CommandNotFoundMagic

Lekensteyn
sumber
5
Linus memposting sesuatu di ini: plus.google.com/u/0/102150693225130002912/posts/iz7zR9B1Prv
bcbc
Dan saya menganggap ini sebagai fitur yang benar-benar luar biasa! Jika Anda menggunakan perintah yang Anda harapkan ada tetapi tidak ada di sana, Anda langsung diberitahu apa yang harus Anda ketik untuk menginstalnya.
Thorbjørn Ravn Andersen
8

Itu karena sebuah paket bernama "command-not-found". Anda dapat menghapus instalannya untuk mempersingkat waktu respons.

kartunis
sumber