[FZH] 关于可执行文件和机器可执行文件的区别

Adamzyg adamzyg在gmail.com
星期五 十月 1 15:58:30 UTC 2010


我不是大虾,不过这个我稍微明白点

shell本身就是一个机器可执行文件,也就是说它是操作系统能认识的文件。你开机时操作系统做完之前一系列初始,然后提示tty登录,就会读取/etc/passwd,linux发现你要执行的文件是/bin/bash,就会执行这个文件,它会把/bin/bash这个机器可执行文件加载到内存映象中,然后根据它的要求来做。它是一个二进制的序列码,cpu根据它来操作。

如果你没有安装shell,你这个脚本就是个文本文件,操作系统是无法识别它的,只有shell明白你要做什么,也就是说你这个脚本只有shell真正认识,操作系统不知道它是什么。实质上你在执行这个脚本文件时,你所在的shell进程会自己处理,一般都会把自己先fork一个跟自己一样的子进程,也是一个一样的进程印象,然后把你这个文本文件读进来,在把它翻译成机器序列,cpu这时候就能知道该做什么了。

也就是说机器可执行文件是cpu识别的一个机器序列,而shell脚本是shell识别的命令序列。

在 2010年10月1日 下午11:19,ajax he <ajaxhe在gmail.com>写道:

> 今天在看UNIX环境高级编程时有这么一句话:“shell脚本是一个可执行文件,却不是机器可执行文件”。不胜理解,还望大虾帮忙解答下~
> _______________________________________________
> Chinese mailing list
> Chinese at lists.fedoraproject.org
> https://admin.fedoraproject.org/mailman/listinfo/chinese
>


关于邮件列表 Chinese 的更多信息