Почему долгая задержка после команды не найдена?

18

Часто, когда я неправильно набираю команду, такую ​​как ls (например, я нажимаю клавишу ВВОД, прежде чем набрать 's'), после появления на терминале большой задержки (~ 2 с):

bash: l: command not found...

Я могу понять причины подобной задержки после ввода неверного пароля, согласно Почему существует большая задержка после ввода неправильного пароля? , Но почему задержка после непризнанной команды? Есть ли FAIL_DELAYв /etc/login.defsповлиять на это также?

paislee
источник
8
Может быть, Fedora теперь также использует эту ужасную ошибку Ubuntu, которая говорит вам: «Эта программа не установлена, чтобы установить ее, введите ...»? Задержка вызвана поиском в базе данных всех устанавливаемых пакетов. Попробуйте вызвать psql (часть PostgreSQL), который, вероятно, не установлен по умолчанию, но, надеюсь, находится в репозиториях.
Ульрих Шварц
Что echo "$PROMPT_COMMAND"выводит?
rozcietrzewiacz
echo "$ PROMPT_COMMAND": printf "\ 033] 0;% s @% s:% s \ 007" "$ {USER}" "$ {HOSTNAME %%. *}" "$ {PWD / # $ HOME / ~ } "
Пейсли
что печатает echo $ PATH? ваша система проверяет каждый раз, когда вы нажимаете клавишу возврата.
Ханан Н.

Ответы:

19

после некоторого исследования я нашел это :

  • попробуйте удалить пакет command-not-found с помощью, а $>yum remove command-not-foundзатем снова установить его с помощью >$yum install command-not-found(на тот случай, если в вашей системе установлен этот пакет).

если это не поможет, попробуйте:

  • добавьте это в ваш ~/.bashrcфайл:

    unset command_not_found_handle

Ханан Н.
источник
2
Второе предложение убрало задержку. У меня не установлена ​​команда package-not-found. Благодарность!
Пейсли
Я подвергаю сомнению мнение того, кто считал, что было бы неплохо включить это по умолчанию
fostandy
16

Я обнаружил, что лучшее решение, по крайней мере на Fedora, это изменить файл конфигурации
/etc/PackageKit/CommandNotFound.conf

самая большая задержка исходит от поиска пакетов для установки, если вы измените SoftwareSourceSearch=trueв SoftwareSourceSearch=false

задержка почти равна 0, и вы все равно будете предупреждены об ошибках, которые могут быть полезны.

потрошить рыбу
источник
3

Fedora использует нечто подобное.

Если вы хотите просто удалить эту функцию, используйте:

yum remove PackageKit-command-not-found

источник
Продолжение: я забыл упомянуть, если вы удалите этот пакет, вы получите сообщение об ошибке: bash: /usr/libexec/pk-command-not-found: No such file or directory Чтобы исправить это, создайте файл после удаления пакета, / usr / libexec / pk-command-not-found со следующим: #!/bin/sh echo "Command not found: $1" Это напечатает: Команда не найдена: fail-command
0

В моем случае это из-за некоторой известной ошибки прокси в / usr / libexec / pk-command-not-found

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]

Моя конфигурация прокси верна, потому что загрузка того же URL-адреса с помощью простой команды curl происходит мгновенно.

Я проверил, что процесс pk-command-not-found имеет конфигурацию прокси:

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

Однако он не использует его по неизвестной причине.

https://bugzilla.redhat.com/show_bug.cgi?id=1553368

Марш
источник