当前位置: 首页>>技术教程>>正文


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

最佳方法

该功能由command-not-found提供(它的功能是在出现误涂等情况下建议替代方案和纠正措施)包装。 Ubuntu默认安装它。

它是如何工作的?

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


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

次佳方法

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

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

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/9419.html,未经允许,请勿转载。