此类行为是由频繁安装在某些挂接到bash的发行版上的工具引起的。该钩子使其可以使您在尝试运行命令而该命令不存在时,bash会搜索已配置存储库中的可用文件,并告诉您要安装该命令需要安装的软件包。
如果您不在Debian系统上,则需要查看bash启动文件配置文件等,以查看是否有任何内容定义了名为的函数command_not_found_handle
。如果定义了该bash函数,则只要您运行命令并且在搜索路径中找不到合适的程序,就会调用该bash函数。如果运行typset | less
并浏览输出,则将看到该command_not_found_handle()
函数(如果已定义)。
在Debian / Ubuntu上,提供此行为的软件包是command-not-found。如果您清除了该内容,则将禁用查找,这会使速度变慢。
这是一个例子
# command-not-found installed
$ time pwgen
The program 'pwgen' is currently not installed. To run 'pwgen' please ask your administrator to install the package 'pwgen'
pwgen: command not found
real 0m0.074s
user 0m0.032s
sys 0m0.040s
# purge command-not-found and restart bash
$ time pwgen
-bash: pwgen: command not found
real 0m0.002s
user 0m0.000s
sys 0m0.000s
确切的时间对您而言当然会有所不同。我在功能强大的服务器上运行了测试。