象Unix一样,Linux程序通过命令解释器来执行。命令解释器是一个用户进程,人们将其称为shell程序。
在Linux中有多个shell程序,最流行的几个是sh、bash和tcsh。除了几个内置命令如cd和pwd外,命令都是一个可执行二进制文件。当键入一个命令时,Shell程序将搜索包含在进程PATH环境变量中查找路径中的目 录来定位这个可执行映象文件。如果找到,则它被加载且执行。shell使用上面描叙的fork机制来复制自身 然后用找到的二进制可执行映象的内容来代替其子进程。一般情况下,shell将等待此命令的完成或者子进 程的退出。你可以通过按下control-Z键使子进程切换到后台而shell再次开始运行。同时还可以使用shell 命令bg将命令放入后台执行,shell将发送SIGCONT信号以重新启动进程直到进程需要进行终端输出和输入。
可执行文件可以有许多格式,甚至是一个脚本文件。脚本文件需要恰当的命令解释器来处理它们;例如 /bin/sh解释shell脚本。可执行目标文件包含可执行代码和数据,这样操作系统可以获得足够的信息将其加载到内存并执行之。Linux最常用的目标文件是ELF,但是理论上Linux可以灵活地处理几乎所有目标文件格式。

