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

chopin xiao chopins.xiao在gmail.com
星期六 十月 2 14:58:53 UTC 2010


这翻译可能有问题
如果说成是:脚本文件和二进制文件就好理解这两种的区别了

在 2010年10月1日 下午11:58,Adamzyg <adamzyg在gmail.com> 写道:
> 我不是大虾,不过这个我稍微明白点
>
> 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 mailing list
> Chinese at lists.fedoraproject.org
> https://admin.fedoraproject.org/mailman/listinfo/chinese
>


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