Ubuntu 为何不能使用 command-not-found 命令?

Ubuntu 为何不能使用 command-not-found 命令?

我使用的是Ubuntu 22.04,发现Ubuntu预装了command-not-found包,但是该command-not-found命令无法使用。

因为 Debian 的 command-not-found 包提供了command-not-found查找当前未安装但可从存储库获得的程序的命令。

请问Ubuntu是否修改过这个包?

任何答复都将不胜感激

答案1

命令本身(实际上是一个可执行的 Python 脚本)位于 中/usr/lib/,通常不在用户的 中PATH。但如果您愿意,当然可以运行它,例如

$ /usr/lib/command-not-found cpufetch
Command 'cpufetch' not found, but can be installed with:
sudo snap install cpufetch  # version 1.04, or
sudo apt  install cpufetch  # version 1.01+git20211208+40b13bc-2
See 'snap info cpufetch' for additional versions.

然而它通常由 bash shell 通过其command_not_found_handle钩子函数自动运行:

$ 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
}

答案2

command-not-found不是要使用的命令。如果您输入与未安装的软件包对应的命令,Ubuntu 将提示您安装该软件包。

例如,如果你输入cpufetch,Ubuntu 将建议你使用以下方式安装它

sudo apt install cpufetch

相关内容