Как Ubuntu знает, какие программы существуют и могут быть установлены?

Я набрал в терминале

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

Итак, Ubuntu знает, что "musique" - это программа, хотя она в настоящее время не установлена на машине. Однако, если я наберу

$ musiquez
No command 'musiquez' found, did you mean:
 Command 'musique' from package 'musique' (universe)

Он знает, что нет такой программы под названием "musiquez".

мой вопрос в том, как Ubuntu это знает? Где хранится эта информация о том, какие приложения могут быть установлены на Ubuntu?

30
задан Sampo Sarrala
21.12.2022 12:58 Количество просмотров материала 3106
Распечатать страницу

2 ответа

эта функция обеспечивается command-not-found( своя функция предложить алтернативы и коррекции в случае mistyping etc. ) пакет. Ubuntu устанавливает его по умолчанию.

как это работает?

как это работает через command_not_found_handle() функция в bash. bash предоставляет крюк, который является в основном функцией, которая вызывается, когда команда не найдена.


Если вам интересно, откройте /usr/lib/command-not-found file и посмотрите на скрипт. Он работает с помощью модуля python CommandNotFound.

enter image description here

9
отвечен stderr 2022-12-22 20:46

пара пакетов, command-not-found и command-not-found-data, что делает эту функцию работы.

command-not-found Это просто обработчик command_not_found_handle() функция bash; он ищет через данные о сопоставлении между командами и пакетами, предоставляемых command-not-found-data.

4
отвечен nc4pk 2022-12-22 23:03

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх