Ubuntu如何知道存在哪些程序并可以安装?


9

我在终端中输入了以下内容

$ 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上安装哪些应用程序的信息存储在哪里?

Answers:


9

此功能由“ 未找到命令提供(它的功能是在出现错误输入等情况下建议替代方法和纠正措施)软件包。Ubuntu默认安装它。

它是如何工作的?

它的工作方式是通过command_not_found_handle()bash中的函数。bash提供了一个钩子,它基本上是一个找不到命令时调用的函数。


如果您更好奇,请打开/usr/lib/command-not-found文件并查看脚本。使用python模块CommandNotFound可以工作。

在此处输入图片说明


4

一对软件包command-not-foundcommand-not-found-data是使此功能起作用的原因。

command-not-found只是command_not_found_handle()bash函数的处理程序;它搜索有关所提供的命令和软件包之间的映射的数据command-not-found-data


我假设,command-not-found然后检查每次用户运行时进行的存储库的本地缓存sudo apt-get update
nerdwaller 2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.