C语言实现基础shell解释器,支持多种内置命令、外部命令、多级管道、基础重定向、特殊符号解析等基本功能。 该项目创建初衷是为了更加深刻理解shell解释器原理以及linux系统编程,有缘进行完善。
1.支持所有shell外部命令,因为外部命令可以直接通过fork+exec+wait实现。
2.支持部分内置命令,对于每个内置命令都要自己实现其基本功能,工作量较大,目前支持:cd、exit、help、history、set、unset、umask。
3.支持多级管道,管道和命令间有无空格均可,但建议规范输入。
4.支持输入输出重定向,包括覆盖和追加以及同时存在输入和输出重定向的情形。
5.支持查看环境变量。
6.命令行解析支持包含任意空格以及引号配对,但不保证格式不规范时或者出现其他特殊字符都能被解析正确,该部分应该是难点。
后续打算添加的命令以及功能有:jobs、fg、bg、test、信号响应、解析执行脚本文件、后台异步执行。
1.利用 git clone 至本地后,执行 make shell,然后 ./shell 即可。
2.执行 help 命令可查看所有命令以及功能细节,默认以more程序显示。
3.查看某个具体命令时执行 help [command],默认以less分页程序显示。
4.考虑到工作量,许多特殊情形未考虑,只考虑了参数个数不匹配的情形,建议规范输入命令。