编写自己的Shell解释器-1[转]

摘要本期的目的是向大家介绍shell的概念和基本原理,并且在此基础上动手做一个简单shell解释器。同时,还将就用到的一些 linux环境编程的知识做一定讲解。

本文适合的读者对象

       linux环境上的c语言开发有一定经验;

linux环境编程(比如进程、管道)有一点了解。

概述

本章的目的是带大家了解shell的基本原理,并且自己动手做一个shell解释器。为此,

首先,我们解释什么是shell解释器。

其次,我们要大致了解shell解释器具有哪些功能;

最后,我们具体讲解如何实现一个简单的 shell 解释器,并对需要用到一些 linux环境编程的知识做一定讲解,并提醒你如果想深入掌握,应该去看哪些资料。

       

Shell解释器是什么?

Shell解释器是一个程序。对,是一个程序,而且,它就在我们的身边。在linux系统中,当我们输入用户名和密码登陆之后,我们就开始执行一个shell解释器程序,通常是 /bin/bash,当然也可以是别的,比如/bin/sh。(详细概念请看第一期中的shell有关部分)

提示:在 /etc/passwd 文件中,每个用户对应的最后一项,就指定了该用户登陆之后,要执行的shell解释器程序。

linux 字符界面下,输入

man bash

调出 bash 的帮助页面

帮助的最开始就对bash下了一个定义:

 

bash 是一个兼容于 sh 的命令语言解释器,它从标准输入或者文件中读取命令并执行。它的意图是实现 IEEE POSIX标准中对 shell和工具所规范的内容。

 

Shell解释器的作用

在登陆 linux 系统之后,屏幕上就会出现一行提示符,在我的机器上,是这样的:

       [root@stevens root]#

       

这行提示符就是由bash解释器打印出来的,这说明,现在已经处于 bash 的控制之下了,也同时提示用户,可以输入命令。用户输入命令,并回车确认后,bash分析用户的命令,如果用户的命令格式正确,那么bash就按照用户的意思去做一些事情。

比如,用户输入:

[root@stevens root]#  echo “hello, world”

那么,bash就负责在屏幕上打印一行“hello world”。

 

如果,用户输入:

[root@stevens root]#  cd /tmp

那么,bash就把用户的当前目录改变为 /tmp

所以,shell解释器的作用就是对用户输入的命令进行“解释”,有了它,用户才可以在 linux 系统中任意挥洒。没有它的帮助,你纵然十八般本领在身,也施展不出。

bash每次在“解释”完用户命令之后,又打印出一行提示符,然后继续等待用户的下一个命令。这种循环式的设计,使得用户可以始终处于 bash 的控制之下。除非你输入 exitlogout明确表示要退出 bash

posted @ 2008-12-05 21:28  aoogur  阅读(429)  评论(0编辑  收藏  举报