本文为原创文章,转载注明出处,欢迎关注网站https://hkvision.cn 缘起 最近在看《深入理解操作系统》,抛开了汇编那一块,书里面很多例子是拿Unix shell来举例的,这使得我对此有了更多的感悟,特此记录一下。 shell与终端 shell不是终端,平时容易弄混的原因是因为这两个东西总是一起出现。准确来说,单独的终端是没有任何意义的,因为这个终端只能回显你输入的一堆字符,而不能执行你输入的命令,所以一般来说,你打开一个终端之后(打开终端是处于一个进程中),同时会执行一个shell(linux中是调用execve这个函数来在一个进程中执行另外一个程序,可以先fork一个子进程,然后在这个子进程里面执行shell)。 shell做的事情 基本的shell功能就是解析用户输入的命令,解析为可执行文件,参数,环境变量等等,然后fork一份子程序,子程序调用execve函数来执行你输入的命令。此外,shell会内置一部分指令,例如quit这个指令并不是一个可执行程序,但是输入在shell中就会退出shell。……

阅读全文