Чому тривалої затримки після команди не знайдено?


18

Часто, коли я ввожу неправильну команду, наприклад ls (наприклад, натискаю ENTER перед тим, як ввести 's'), після появи терміналу виникає велика затримка (~ 2s):

bash: l: command not found...

Я можу зрозуміти причини подібної затримки після введення неправильного пароля, за Чому виникає велика затримка після введення неправильного пароля? . Але навіщо затримуватися після нерозпізнаної команди? Є чи FAIL_DELAYв /etc/login.defsвплинути на це також?


8
Можливо, Fedora також зараз використовує ту жахливу неправильну функцію Ubuntu, яка говорить вам: "Ця програма не встановлена, щоб її встановити, введіть ..."? Потім затримка викликана пошуком бази даних всіх встановлених пакетів. Спробуйте викликати psql (частина PostgreSQL), який, мабуть, не встановлений за замовчуванням, але, сподіваємось, у сховищах.
Ульріх Шварц

Що означає echo "$PROMPT_COMMAND"вихід?
rozcietrzewiacz

echo "$ PROMPT_COMMAND": printf "\ 033] 0;% s @% s:% s \ 007" "$ {USER}" "$ {HOSTNAME %%. *}" "$ {PWD / # $ HOME / ~ } "
paislee

які ехо $ PATH друкує? ваша система перевіряється там кожного разу, коли ви натискаєте клавішу повернення.
Ханан Н.

Відповіді:


19

після деяких досліджень я виявив це :

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

якщо це не допомагає спробувати:

  • додайте це у свій ~/.bashrcфайл:

    unset command_not_found_handle


2
Друга пропозиція усунула затримку. У мене не встановлено команду пакета не знайдено. Спасибі!
paislee

Я сумніваюся у судженнях, хто вважав, що було б гарною ідеєю включити це за замовчуванням
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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.