在某些 Linux 安装上,有一个“功能”,当您键入在路径中找不到的命令时,bash 会自动建议类似的命令或 apt 软件包。
我觉得这很烦人,因为这需要几秒钟并阻塞终端。
这是在哪里配置的(bash、Ubuntu)?我可以在哪里更改/禁用此功能?我只想要未知命令的错误消息,仅此而已。
在 ~/.bashrc 中找不到任何内容。
这是我公司机器上的输出(需要 10 秒),已缩短:
> eco 'hello world'
Command 'eco' not found, did you mean:
command 'ecj' from deb ecj (3.16.0-1)
command 'ecc' from deb ecere-dev (0.44.15-1build3)
[...]
command 'co' from deb rcs (5.9.4-6)
command 'ico' from deb x11-apps (7.7+8)
command 'peco' from deb peco (0.5.1-1)
command 'ecm' from deb gmp-ecm (7.0.4+ds-5)
Try: apt install <deb name>
>
答案1
在 Debian(和 Ubuntu 等)上,这是由command-not-found
包完成的。要停止它,请删除该包。
apt-get purge command-not-found
IIRC,您必须退出并重新启动当前的 shell(或注销并再次登录,或重新启动),以便在删除软件包后重置 command_not_found_handle 函数。或者只是unset -f command_not_found_handle
在每个正在运行的交互式 shell 中运行(例如终端模拟器中的每个选项卡)。
顺便提一句:
Package: command-not-found
Version: 23.04.0-1
Installed-Size: 522
Maintainer: Julian Andres Klode <[email protected]>
Architecture: all
Depends: apt-file (>= 3.0~exp1~), lsb-release, python3-apt, python3:any
Suggests: snapd
Description-en: Suggest installation of packages in interactive bash sessions
This package will install a handler for command_not_found that looks up
programs not currently installed but available from the repositories.
PS:你不是唯一一个觉得这很烦人的人。我从我构建的每个系统中卸载它。我bash-completion
也清除了包,我发现自定义完成造成的限制和延迟比好处更烦人。