Tại sao một sự chậm trễ lâu sau khi không tìm thấy lệnh?


18

Thông thường khi tôi gõ nhầm một lệnh như ls (ví dụ: tôi nhấn ENTER trước khi tôi nhập 's') thì có độ trễ dài (~ 2s) sau khi thiết bị đầu cuối hiển thị:

bash: l: command not found...

Tôi có thể hiểu lý do cho sự chậm trễ tương tự sau khi nhập mật khẩu không chính xác, mỗi lần Tại sao lại có độ trễ lớn sau khi nhập sai mật khẩu? . Nhưng tại sao lại trì hoãn sau khi một lệnh không được công nhận? Liệu FAIL_DELAYtrong /etc/login.defsảnh hưởng này cũng?


8
Có lẽ Fedora hiện cũng đang sử dụng tính năng không phù hợp với Ubuntu khủng khiếp đó cho bạn biết "Chương trình này chưa được cài đặt, để cài đặt nó, gõ ..."? Sự chậm trễ sau đó được gây ra bằng cách tìm kiếm cơ sở dữ liệu của tất cả các gói có thể cài đặt. Hãy thử gọi psql (một phần của PostgreSQL), có thể không được cài đặt theo mặc định, nhưng hy vọng là trong kho.
Ulrich Schwarz

Làm những gì echo "$PROMPT_COMMAND"đầu ra?
rozcietrzewiacz

echo "$ PROMPT_COMMAND": printf "\ 033] 0;% s @% s:% s \ 007" "$ {USER}" "$ {HOSTNAME %%. } "
paislee

Những gì vang vọng $ PATH in? hệ thống của bạn được kiểm tra mỗi lần bạn nhấn phím quay lại.
Hanan N.

Câu trả lời:


19

Sau một số nghiên cứu tôi đã tìm thấy điều này :

  • cố gắng gỡ cài đặt gói không tìm thấy bằng lệnh $>yum remove command-not-foundsau đó cài đặt lại >$yum install command-not-found(chỉ trong trường hợp bạn đã cài đặt gói đó trên hệ thống của mình).

nếu điều đó không giúp được hãy thử:

  • thêm phần này vào ~/.bashrctập tin của bạn :

    unset command_not_found_handle


2
Đề nghị thứ hai loại bỏ sự chậm trễ. Tôi không cài đặt gói lệnh không tìm thấy. Cảm ơn!
paislee

Tôi nghi ngờ sự phán xét của bất cứ ai nghĩ rằng đó là một ý tưởng tốt để kích hoạt điều này theo mặc định
fostandy

15

Tôi thấy rằng giải pháp tốt nhất, ít nhất là trên Fedora, là sửa đổi tệp cấu hình
/etc/PackageKit/CommandNotFound.conf

vì sự chậm trễ lớn nhất đến từ việc tìm kiếm các gói để cài đặt, nếu bạn sửa đổi SoftwareSourceSearch=truetrong SoftwareSourceSearch=false

độ trễ gần như bằng 0 và bạn vẫn được cảnh báo về lỗi chính tả, có thể hữu ích.


3

Fedora sử dụng một cái gì đó tương tự.

Nếu bạn muốn loại bỏ tính năng này, hãy sử dụng:

yum remove PackageKit-command-not-found

Theo dõi: Tôi quên đề cập đến nếu bạn gỡ bỏ gói này, bạn sẽ nhận được thông báo lỗi: bash: /usr/libexec/pk-command-not-found: No such file or directory Để sửa lỗi này, hãy tạo tệp sau khi xóa gói, / usr / libexec / pk-lệnh-not-find với phần sau: #!/bin/sh echo "Command not found: $1" Điều này sẽ in: Không tìm thấy lệnh: fail-lệnh

0

Trong trường hợp của tôi, đó là do một số lỗi proxy đã biết trong / usr / libexec / pk-lệnh-not-find

Failed to search for file: cannot update repo 'updates':
Cannot prepare internal mirrorlist:
Curl error (28): Timeout was reached for https://mirrors.fedoraproject.org/metalink?repo=updates-released-f28&arch=x86_64 
[Connection timed out after 30002 milliseconds]

Cấu hình proxy của tôi là chính xác vì tải xuống cùng một URL chính xác bằng lệnh curl trần thành công ngay lập tức.

Tôi đã kiểm tra quá trình pk-lệnh-not-find có cấu hình proxy:

tr  '\0' '\n' < /proc/$(pgrep -f pk-command-not-found)/environ | grep -i proxy

Tuy nhiên nó không sử dụng nó cho một số lý do không rõ.

https://ormszilla.redhat.com/show_orms.cgi?id=1553368

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.