Почему Ubuntu так долго говорит "команда не найдена"?


24

По какой-то причине, с моей настройкой, Ubuntu может потребоваться несколько секунд, чтобы ответить «команда не найдена», когда я случайно набрал команду. Почему это так долго? Можно ли как-то сократить время ожидания?

У меня есть 13 каталогов в моем PATH, но даже в этом случае (в большинстве из них всего несколько файлов), поиск команды в 13 каталогах не должен занимать несколько секунд, верно?

Ответы:


34

Оболочка делает больше, чем просто смотрит внутрь $PATH. Если команда не найдена, выполняется функция bash, command_not_found_handleкоторая в свою очередь вызывает скрипт python /usr/lib/command-not-found. В списке пакетов выполняется поиск программ, которые должны быть установлены для работы команды. В случае опечатки, которую вы знаете, как решить, просто нажмите Ctrl+, Cчтобы прервать процесс поиска.

Пример полезного сообщения для опечатки:

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

Пример полезного сообщения для отсутствующего пакета:

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

См. Также обоснование этого, https://wiki.ubuntu.com/CommandNotFoundMagic


5
Линус что-то написал по этому
поводу

И я считаю, что это действительно потрясающая особенность! Если вы используете команду, которую ожидаете присутствовать, но ее нет, вам прямо скажут, что набирать, чтобы установить ее.
Турбьёрн Равн Андерсен

8

Это из-за пакета с именем "command-not-found". Вы можете удалить его, чтобы сократить время отклика.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.