文档介绍:Unix Shell 程序编写的方法详解 Shell 是什么? 任何发明都具有供用户使用的界面。 UNIX 供用户使用的界面就是 Shell (DOS mand 熟悉吧,但 UNIX 的要强大的多)。 Shell 为用户提供了输入命令和参数并可得到命令执行结果的环境。为了不同的需要, UNIX 提供了不同的 Shell 。现在的 UNIX 大部分都支持 Bourne Shell ,以下教程就以 Bourne Shell (Bsh) 为例,一步步的领略 UNIX Shell 的强大功能,占先其强大魅力,达到更方便灵活的管理、应用 UNI X 的目的。 内核和 Shell 的交互方法启动 UNIX 时,程序 UNIX( 内核) 将被调入计算机内存,并一直保留在内存中直到机器关闭。在引导过程中,程序 init 将进入后台运行一直到机器关闭。该程序查询文件/etc/inittab ,该文件列出了连接终端的各个端口及其特征。当发现一个活动的终端时, init 程序调用 getty 程序在终端上显示 login 等登陆信息。(username 和 passwd) ,在输入密码后, getty 调用 login 进程, 该进程根据文件/etc/passwd 的内容来验证用户的身份。若用户通过身份验证, login 进程把用户的 home 目录设置成当前目录并把控制交给一系列 setup 程序。 setup 程序可以是指定的应用程序, 通常 setu p 程序为一个 Shell 程序,如:/bin/sh 即 Bourne Shell ( command 出来了,呵呵)。得到控制后, Shell 程序读取并执行文件/etc/.profile 。这两个文件分别建立了系统范围内的和该用户自己的工作环境。最后 Shell 显示命令提示符,如$。( 这是以 bsh 为例, 若是 csh, ,ksh ,bas h 等等) 注不妨把/etc/.profile 看成 DOS 的 或 文件) 当 shell 退出时, 内核把控制交给 init 程序, 该程序重新启动自动登陆过程。有两种方法使 shell 退出, 一是用户执行 exit 命令,二是内核( 例如 root 用 kill 命令) 发出一个 kill 命令结束 shell 进程。 shell 退出后,内核回收用户及程序使用的资源。用户登陆后,用户命令同计算机交互的关系为: 命令进程---> Shell 程序--->UNIX 内核---> 计算机硬件。当用户输入一个命令,如$ls, Shell 将定位其可执行文件/bin/ls 并把其传递给内核执行。内核产生一个新的子进程调用并执行/bin/ls 。当程序执行完毕后,内核取消该子进程并把控制交给其父进程,即 Shell 程序。例如执行: $ps 该命令将会列出用户正在执行的进程,即 Shell 程序( 下来详细说说,别急现在)和 ps 程序。若执行: $sleep 10& $ps 其中第一条命令将产生一个在后台执行的 sleep 子进程。 ps 命令执行时会显示出该子进程。每当用户执行一条命令时, 就会产生一个子进程。该子进程的执