我使用的是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