找不到命令“ bla”,您的意思是:?


7

因此,当找不到命令时,通过什么方式填充“您的意思是:”列表?哪个程序可以找到这些备用命令?“(main),(universe)...”的含义是什么?我可以更改哪个程序找到这些吗?


1
您是在问哪些程序可以提供此功能,或者您要使用哪种功能?如果是后者,则您提供的信息太少。您使用什么外壳开始?
techraf '16

我正在使用bash,但实际上我只是在最一般的情况下说。哪些程序可以提供此功能,并且在大多数shell中是否有相当一致的方法来确定程序?

这也很大程度上取决于您所使用的Unix / Linux的风格/发行版如何实现该功能。
Randall

Answers:


2

如果你看/etc/apt/sources.list它的内容将有格式

#Archive type  Repository URL                   Distribution Component
 deb           http://archive.ubuntu.com/ubuntu precise      main

封存类型

每行的第一个单词deb或deb-src指示归档的类型。Deb表示归档文件包含二进制软件包(deb),依此类推。

储存库网址

该行的下一个条目是您要从中下载软件包的存储库的URL。

分配

“发行版”可以分别是发行代码名称/别名(乳清,杰西,舒展,sid)或发行类(可稳定,稳定,测试,不稳定)。

“(main),(universe)...”的含义是什么?

零件

main包含与DFSG兼容的软件包,contrib软件包包含与DFSG兼容的软件,但不包含main依赖,non-free包含与DFSG不兼容的软件,依此类推。提示-检查存储库URL中的一个,它应该有一个带有组件名称的文件夹。

软件包管理者说, apt将有一个数据库,其中包含存储库中所有软件包的列表,并且它足够聪明,可以为您提供建议。

您的软件包管理器可能位于eof dpkg(例如Debian,Ubuntu等),apt(例如Debian,Ubuntu等)上,现在已过时rpm(例如,出于兼容性原因而不再使用Redhat和较新的版本),yum(例如。Fedora,CentOS),dnf-浓化的yum(例如新的Fedora版本)等等。有关更完整的列表,请检查。您甚至可能会在一个发行版中看到多个软件包管理器。例如,在Ubuntu中,您可能会看到dpkg,它提供了/ etc / apt / sources / list。

所以当你输入

cleaq

可能会说

cleaq: no command found. Did you mean clean.

通过什么方式填充“您的意思:”列表?

这涉及与包管理器数据库中的包进行模式匹配。

当您执行 apt-get update

不确定

我可以更改哪个程序找到这些吗?

虽然。我相信这是无法更改的功能。虽然不太确定

参考Debian SourceList


1
@vondirac:是的,sources.list在内部/etc/apt。好吧,一般来说,您可以说您的软件包管理器会为您维护此列表,并且您的软件包管理器可以是apt(例如Debian,Ubuntu等),rpm(Redhat及其克隆),yum(例如Fedora)。 ,CentOS)和dnf(新的Fedora版本)
sjsam '16

您可以参考一些Ubuntu doco来改善此答案。
JdeBP '16

4

对于bash,其行为由shell函数控制command_not_found_handle(请参阅参考资料man bash)。

要查看该函数定义了什么行为,可以发出:

declare -p -f command_not_found_handle

您可以通过重新定义command_not_found_handle功能来更改使用哪个程序。

在基于Debian的发行版(包括Ubuntu)中,该软件包command-not-found是通常安装的,并且可以/usr/lib/command-not-found 从以下链接获得:

建议在交互式bash会话中安装软件包

该软件包将为command_not_found安装处理程序,该处理程序查找当前未安装但可从存储库中获取的程序。

也可以看看:


0

这不是Linux shell的标准功能。至少有两种可能性:

  • zsh 正在维护自己的建议清单
  • 项目thefuck提供了另一个
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.