linux 执行程序流程shell程序的编写流程
Linux系统中,执行程序的基本流程如下:
1. 用户输入命令:
  用户在终端(TTY或shell)中键入一个命令行指令,并按下回车键。这个命令可能是一个内置命令(由Shell直接解析和执行),也可能是一个外部可执行文件的名称。
2. Shell解析命令:
  Shell接收到用户的命令后,首先检查它是否为内部命令或别名。如果不是,则认为它是外部命令并开始查对应的可执行文件。
 
3. 搜索可执行文件:
  Shell通过环境变量`PATH`指定的路径列表来搜索可执行文件。它会按照路径列表中的顺序逐个目录查与命令同名的可执行文件。
4. 加载程序:
  当到匹配的可执行文件时,Shell将通过操作系统调用加载器(如动态链接器ld-linux.so或其他系统特定的加载器)将其加载到内存中。
5. 程序执行:
  加载完成后,控制权从Shell传递给该可执行文件。程序开始执行其代码,包括初始化、处理命令行参数以及执行主程序逻辑。
6. 资源分配:
  操作系统负责分配必要的系统资源,如内存空间、打开文件描述符等,以便程序正常运行。
7. 程序执行完毕:
  程序执行完其任务后,释放所占用的资源并通过退出系统调用通知操作系统其已完成执行。程序返回一个退出状态码给Shell。
8. 结果反馈给用户:
  Shell通常会显示程序的输出,并根据程序的退出状态码来判断执行成功与否。
    对于编译型语言写的程序,还涉及到预编译、编译、汇编和链接这四个步骤,在这些步骤之后生成了可执行文件,然后才能按照上述流程执行。而对于解释型语言,如Python、Perl等,执行过程则涉及到了解释器读取脚本、解析语句并立即执行的过程。