分类: LINUX
2009-10-04 01:53:07
Bash shell 2.0 是Linux中最常见的shell,你想知道我们怎样在Bash shell 中加入自己的
命令吗?按照下面的步骤,我们就可以在Bash shell 中随心所欲地加入我们自己的命令。
一 概述
Bash shell的命令分为两类,一类是外部命令,通过系统调用或独立的程序实现。另一类就
是我们所要关心的内部命令(BUILTINS 命令),此类命令是由一特殊的文件 (.def)格式所
实现的。我们所熟悉的命令如help ,cd ,history等都是此类命令。在网上下载Bash shell
2.0的软件包,用TAR 命令解开后,你会发现其目录下有一名为builtin的目录,进入到此目
录下,就会看到许多扩展名为def的文件,例如help.def,cd.def 等等。由这些def文件产生
同名的.c文件,即help.c由help.def产生,由此再生成 help内部命令。我们就是通过修改这
些def文件来增加我们自己的命令。
二 方法
1、用任意的编辑器(如在WIN98下ULTRAEDIT等等)打开一个DEF文件。让我们就以HELP.DEF
为例,你会发现他和普通的c++原程序文件大同小异,只不过多了几个特殊的部分。下面我将
建立一个非常简单的命令hello,以此命令为例,说明增加内部命令的步骤。命令hello的 D
EF 原文件如下:
This is an example of builtin_command
$PRODUCES hello.c
$BUILTIN hello
$FUNCTION hello_builtin
$DEPENDS_ON HELLO_BUILTIN
$SHORT_DOC hello : this command will print "hello new world !" in your compute
r.
$END
int hello_builtin()
{
printf(" hello new world !");
return (EXECUTION_SUCCESS);
}
这个例子在LINUX REDHAT 5.0的BASH 2.0上经过验证。
读者可以很清楚地看到,这些特殊的部分就是$BUILTIN, $ PRODUCES ,$FUNCTION等关键字,
它们的意思很明确,$BUILTIN hello表明内部命令是hello。
$FUNCTION hello_builtin 表明执行的功能程序是hello_builtin().$SHORT_DOC 表明命令的
一个简短说明,以便帮助使用。
2、在编写完DEF文件之后,就需要修改MakeFile文件,在Builtins 目录下,你将会发现Make
File和MakeFile.in 这两个文件,存放着编译信息,分别用编辑器打开这两个文件,在以下
几处作修改:
(1)在"DEFSRC = "处增加一项$(srcdir)/hello.def 注意要以空格和其他项分开。
(2) 在"OFILES = "处增加一项hello.o(为LINUX的可执行文件)
(3) 查找"cd.o : cd.def",在其下面增加一项hello.o : hello.def
建议MakeFile文件的修改最好在LINUX环境下进行。
同理,将bash2.0目录下的MakeFile 和MakeFile.in文件也做以上的修改,即可。
3、在LINUX环境中,你要首先以超级用户登录,在BASH2.0的目录下,依次键入以下命令:
# config
# make
# install
这样就将修改过的BASH2.0安装到本机上了。这时你可以键入命令hello了。
三 用途
以上仅仅举了一个很小的例子,无实际用途,但是如果你想修改你的LINUX系统,或者需要一
个专有的操作系统,何不试试这种方法,会方便快捷许多的。