如果之前已经问过这个问题,请原谅,但是基本上不可能搜索到。
wibble
当我在 bash 提示符下输入例如时,它会打印
Command 'wibble' not found, did you mean:
command 'wobble' from deb emboss (6.6.0+dfsg-11ubuntu1)
Try: sudo apt install <deb name>
现在我想知道的是这个处理程序在哪里,我可以用自己的脚本替换它吗?例如,如果我在命令行中粘贴一个 github url,前面没有“git clone”,然后将其扩展为“git clone”,其他 url 将在 Chrome 中启动,或者其他方式。
我找不到这个“未找到命令”处理程序在哪里,但我怀疑它是某个挂入 bash 的脚本。
答案1
处理程序本身是一个shell 函数:
$ declare -f -p command_not_found_handle
command_not_found_handle ()
{
if [ -x /usr/lib/command-not-found ]; then
/usr/lib/command-not-found -- "$1";
return $?;
else
if [ -x /usr/share/command-not-found/command-not-found ]; then
/usr/share/command-not-found/command-not-found -- "$1";
return $?;
else
printf "%s: command not found\n" "$1" 1>&2;
return 127;
fi;
fi
}
Ubuntu 中的默认处理程序在该文件中定义/etc/bash.bashrc
。反过来,/usr/lib/command-not-found
它是包提供的 Python 脚本command-not-found
。