linux中编写的shell是否需要编译?

来源:百度知道 编辑:UC知道 时间:2024/05/11 13:14:56
与c语言编写的程序有什么区别?

所谓shell编程是无须编译即可执行的组命令堆砌,而C语言写出的则是必须进编译的C语言代码。

比方说你用C语言改写了ls这个可执行文件,那么首先就要把这个ls文件的C代码,编译成为能使计算机理解的机器代码。而shell只不过是调用这个编译完成后的ls文件,并根据需要添加ls文件后的参数,而这部分参数本身是源于ls文件自身的。

shell与C近似的地方,都是通过一种逻辑结构判断 来实现自身功能化。
-------------
这部分是对“不看天 ”提出“shell 大部分都是命令罗列,应该也是需要编译的吧,莫非机器知道 -n file是怎么回事?”的回复。

所谓shell是针对kernel而言的,不论它是那种shell或是以什么方式出现的shell。机器的操作者在应用操作中不可能接触到kernel,而只能通过shell这个交互界面把命令文件翻译或转译机器代码,这个过程不是编译过程。

不需要,因为这个是解释型语言,所有解释型的都不需要编译
c写的就是要编译的
他们区别是,解释型语言是一行行执行你写的语句的,而编译的不是,是先整体把程序编译成一个样子,然后在执行编译后的那个东西

楼上很强,我没看懂

除了机器语言还有不用编译的语言吗?
shell 大部分都是命令罗列,应该也是需要编译的吧,莫非机器知道 -n file是怎么回事?
每个语言都有自己的编译器,shell也分bash sh csh等很多种,只是linux下没有可见而已。

shell和c之间没有可比性,每种语言的支持库不同,当然书写格式也会有差异,
不过shell中()的用法倒是与c很相似。

shell也要执行的!执行的过程不就是对它编译吗?