在Linux C语言下,可执行的Shell脚本文件与编译之后的C可执行文件的区别有哪些 ?

可执行的Shell脚本文件本质是一个可执行的文本文件,可以使用sh和./命令执行,而C可执行文件是一个可执行的二进制文件,只能使用./命令执行, 并且这两种文件的rwx权限是一样的,我该怎么区分它们呢,它们之间有什么区别吗 ?谢谢!

二进制文件是机器码,可直接执行,而shell脚本是文本,需依赖sh来解析并执行,shell脚本的第一行一般类似这样:
#!/bin/sh
有了这行,且有执行权时,就可以支持 ./ 方式执行,如果没有这行,或没有执行权时,则只支持 sh xxx 这种方式
简单的识别方法:
用 file 命令识别:
XXX: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=0x5e6e040ea7ce5bf5dcdfc87398b2f091a1e513f2, stripped
XXX.sh: POSIX shell script, ASCII text executable
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-05-23
shell脚本是shell的一种扩展功能,也就是shell会根据你所写的脚本一条一条的去执行,C写的程序是直接给CPU执行的。
一般来说做一些简单功能,特别是和shell有关的。我们会用shell脚本,如系统环境的设定,开机后执行系统的初始化等。
做一些功能复杂的,特别人用户自已所想到的功能时会用C语。另外如果程序执行是要用到root权限是最好也用C语。本回答被提问者采纳
第2个回答  2013-05-23
C可执行文件是编译性文件,必须经过编译器编译过之后,才能运行!
shell脚本不用你编译,随便用一个编辑器,编译完之后./只要没语法错误就可以运行
linux 不看文件后缀,后缀是给人看的,a.sh b.sh a(shelle脚本)都是脚本文件.sh是告诉你这个是脚本文件

当然可以用 file 要测得文件名查看文件类型追问

再问一下:比如要实现一个功能,什么时候用Shell脚本实现比较好,什么时候用C程序实现比较好 ?

追答

shell脚本是命令解释器,用来跟内核交互的,完成对应用进程的管理,对文件的操作

相似回答