比如说在系统刚刚启动的时候,这里要求我们进行登录,我输入用户名,然后输入密码,就可以正常登录,正常登录以后,会显示什么,叫命令提示符对吧?叫做prompt,
我们把它称为叫命令提示符。如下图,
那就意味着我们在底下可以输入命令了,对吧?既然叫命令提示符,那么所输入的一定得是命令,
要注意这点,一定得是命令才成,当然,这里的命令既可以是二进制的程序,也可以是脚本文件,
只不过对于内核而言,它是严格区分两种不同的。
那之前提到过,一个程序在启动的时候,它到底是如何能够被启动起来的?它到底为什么能执行起来?这个我们不便于过于深入的去了解它,但要明白,一般来讲,一个可执行文件,它必须有一个程序的执行入口,还提到过库是没有执行入口的,虽然它可执行,那因此,一个程序必须要有执行入口,那怎么是有执行入口呢?这个二进制文件开头处有一个特殊字符,或者有几个字节是非常独特的标识,我们把它称为叫程序的模数,叫magic number,这个magic number可以标识这个二进制程序的执行格式。
各位还需要理解的是,在Windows上所执行程序的模数和在linux上所执行的程序的模数是不一样的。他们所理解的二进制格式也是不尽相同的,所以就算两者的库完全一样,Windows的C语言库和linuxC语言库完全一致,你在linux上编译的程序,它也未必能在Windows上运行。
接下来,讲到写脚本的时候,大家应该知道,比如说在脚本开始的时候,写个什么井号叹号,
比如像#!/bin/bash、#!/bin/sh等等,我们脚本第一行必须得这样写,为什么呢?其实这就是给我们这样一个文件,指定一个模数的,这就是个模数,它也被称为叫shebang,但一定要记得,当一个程序被启动的时候,这个程序的执行入口,或者这个程序又被提交给内核了,
大家应该知道,只有内核才能管理进程的,还记得吗?之前提到过的内核功能,进程管理,内存管理,文件系统等等,对不对?还有什么?驱动程序,对吧?这些基本的概念,一定要记牢了,因为以后它处处体现这些功能的,而且以后管理这些文件,一旦在说起这个东西的时候,你必须要知道它在什么地方。
那因此,当在命令提示符底下给它一个命令,或者给它建入一个命令,并敲回车的时候,
这么个执行程序就会被提交给内核,由bash提交给内核,内核接着就去找这个执行程序的模数,
看它是不是一个可执行格式以及是不是当前内核可以理解的可执行格式,如果是就执行起来了,
否则就拒绝运行。当然,到底是不是会真正执行,还要取决于权限等各种复杂的外围机制,没说那么复杂,但要理解这个概念,所以程序必须得有执行入口,这个执行入口就是用于标识它的模数以及这个程序的执行格式的等等。