Cod*_*lue 9 package-management ubuntu apt-get
我在终端中输入了以下内容
$ musique
The program 'musique' is currently not installed. You can install it by typing:
sudo apt-get install musique
Run Code Online (Sandbox Code Playgroud)
所以Ubuntu知道“musique”是一个程序,尽管它目前没有安装在机器上。但是,如果我输入
$ musiquez
No command 'musiquez' found, did you mean:
Command 'musique' from package 'musique' (universe)
Run Code Online (Sandbox Code Playgroud)
它知道没有这样的程序叫做“musiquez”。
我的问题是,Ubuntu 是如何知道这一点的?这些关于可以在 Ubuntu 上安装哪些应用程序的信息存储在哪里?
此功能由command-not-found(其功能是在输入错误等情况下建议替代方案和更正)包提供。Ubuntu 默认安装它。
它是如何工作的?
它的工作方式是通过command_not_found_handle()bash 中的函数。bash 提供了一个钩子,它基本上是一个在找不到命令时调用的函数。
如果您更好奇,请打开/usr/lib/command-not-found文件并查看脚本。它使用 python 模块 CommandNotFound 工作。

| 归档时间: |
|
| 查看次数: |
379 次 |
| 最近记录: |