I am LAZY bones? AN ancient AND boring SITE

2009年 07月 02日 的归档

gentoo也可以提示未安装的命令

用ubuntu的时候,如果你在命令行里输入一个未安装的命令,bash会给出很人性化的提示,让你先安装xxx软件包,比如:

程序 'xxx' 尚未安装。  您可以通过输入以下命令安装:
sudo apt-get install xxx

其实gentoo下也是可以做类似提示的.
gentoo早就已经默认是 bash 4.x 了,这个版本的bash,在找不到命令的时候,会试着调用 command_not_found_handle 这个函数,也就是说,只要你在什么地方定义了这个函数,就可以实现人性化的提示.再联想到之前我整的e-file,一切都是这么简单,哈哈~
在 ~/.bashrc 里加上如下几行:

if echo "`uname -a`" | grep gentoo >/dev/null ; then
	#由于我的.bashrc是ubuntu和gentoo共用的,所以这里还有些gentoo特有的alias...下面几行才是关键.
	command_not_found_handle () {
		echo "-bash: $1: command not found" >&2
		e-file $1 >&2
	}
else
	#ubuntu的alias....
fi

当然,这之前肯定要先安装e-file,如果你已经加了gentoo-china的overlay,可以直接 emerge e-file
最终效果贴个图(我是gnome,没装kdevelop):
command_not_found_handle效果图