我注意到在其他 Ubuntu 机器上,当你没有 Maven 并且尝试安装时,mvn
它会告诉你安装maven
或maven2
。这不会发生在我的 xfce 上,我该如何启用它?
答案1
这个包被恰当地称为command-not-found
。此包的与的集成bash
是包本身的一部分bash
,除非您修改了/etc/bash.bashrc
,否则如果您安装了此包,它应该可以工作。
如果您使用 zsh,则添加到/etc/zshrc
:
. /etc/zsh_command_not_found
答案2
muru 的回答这个包的名字是正确的command-not-found
。它基本上提供了一个实际完成主要工作的python
脚本。/usr/lib/command-not-found
但您在 Ubuntu 中收到的消息实际上是由一个利用command-not-found
属性的函数定义的。它名为command_not_found_handle
,位于 中/etc/bash.bashrc
。
$ type -a command_not_found_handle
command_not_found_handle is a function
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
}
由于上述函数,我们在不同情况下会收到不同的错误消息:
$ svn
The program 'svn' is currently not installed. You can install it by typing:
sudo apt-get install subversion
$ foobar
foobar: command not found
让我们检查 :
$ /usr/lib/command-not-found svn
The program 'svn' is currently not installed. You can install it by typing:
sudo apt-get install subversion
$ /usr/lib/command-not-found foobar
foobar: command not found
由于您没有启用该包,因此您基本上每次command-not-found
都满足以下功能片段:command_not_found_handle
printf "%s: command not found\n" "$1" 1>&2;
return 127;
因此你每次都会得到以下信息:
$ svn
svn: command not found
$ foobar
foobar: command not found
简而言之,您可以安装该command-not-found
软件包,然后将上面提到的功能(如果尚不存在)添加到文件/etc/bash.bashrc
(适用于所有用户)或~/.bashrc
(仅适用于您)。