为什么 Ubuntu 说“找不到命令”需要这么长时间

mlt*_*tsy 24 command-line bash

出于某种原因,在我的设置中,当我不小心输入命令时,Ubuntu 可能需要几秒钟才能响应“未找到命令”。为什么需要这么长时间?有什么办法可以缩短我必须等待的时间吗?

我的 PATH 中确实有 13 个目录,但即便如此(其中大多数只有几个文件),搜索 13 个目录中的命令应该不会花费几秒钟的时间,对吗?

Lek*_*eyn 34

shell 不仅仅是查看$PATH. 如果未找到命令,command_not_found_handle则执行bash 函数,该函数又调用 python 脚本/usr/lib/command-not-found。这会在包列表中搜索应该安装以使命令工作的程序。如果您知道如何解决拼写错误,只需按Ctrl+C即可中止搜索过程。

输入错误的有用消息示例:

$ aptget update
No command 'aptget' found, did you mean:
 Command 'apt-get' from package 'apt' (main)
aptget: command not found
Run Code Online (Sandbox Code Playgroud)

丢失包的有用消息示例:

$ deja-dup
The program 'deja-dup' is currently not installed.  You can install it by typing:
sudo apt-get install deja-dup
Run Code Online (Sandbox Code Playgroud)

另请参阅这背后的基本原理,https://wiki.ubuntu.com/CommandNotFoundMagic

  • Linus 在此发布了一些内容:https://plus.google.com/u/0/102150693225130002912/posts/iz7zR9B1Prv (5认同)

car*_*ist 8

这是因为一个名为“command-not-found”的包。您可以卸载它以缩短响应时间。