未找到命令处理程序

未找到命令处理程序

如果之前已经问过这个问题,请原谅,但是基本上不可能搜索到。

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

相关内容