Tại sao phải mất quá lâu để Ubuntu nói lệnh không tìm thấy


24

Vì một số lý do, với thiết lập của tôi, Ubuntu có thể mất vài giây để phản hồi với "lệnh không tìm thấy" khi tôi vô tình đánh máy một lệnh. Tại sao phải mất quá lâu? Có cách nào để rút ngắn khoảng thời gian tôi phải chờ không?

Tôi có 13 thư mục trong PATH của mình, nhưng ngay cả như vậy (hầu hết trong số chúng chỉ có một vài tệp trong đó), không nên mất vài giây để tìm kiếm 13 thư mục cho một lệnh phải không?

Câu trả lời:


34

Vỏ không chỉ nhìn vào $PATH. Nếu không tìm thấy lệnh, hàm bash command_not_found_handleđược thực thi, đến lượt nó gọi tập lệnh python /usr/lib/command-not-found. Tìm kiếm này trong danh sách các gói cho các chương trình nên được cài đặt để lệnh hoạt động. Trong trường hợp lỗi chính tả mà bạn biết cách giải quyết, chỉ cần nhấn Ctrl+ Cđể hủy bỏ quá trình tìm kiếm.

Ví dụ về một thông điệp hữu ích cho một lỗi đánh máy:

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

Ví dụ về một thông báo hữu ích cho gói bị thiếu:

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

Xem thêm lý do đằng sau này, https://wiki.ubfox.com/CommandNotFoundMagic


5
Linus đã đăng một cái gì đó trên này: plus.google.com/u/0/102150693225130002912/posts/iz7zR9B1Prv
bcbc

Và tôi coi đây là một tính năng thực sự tuyệt vời! Nếu bạn sử dụng một lệnh mà bạn muốn có mặt nhưng không có ở đó, bạn sẽ được thông báo trực tiếp những gì cần gõ để cài đặt nó.
Thorbjørn Ravn Andersen

8

Đó là vì một gói có tên "lệnh không tìm thấy". Bạn có thể gỡ cài đặt nó để rút ngắn thời gian phản hồi.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.