Shell命令是用什么语言编写的?

时间:2013-09-27 09:06:57

标签: linux bash shell kernel

有很多shell命令,比如

  

ls,cd,cat等

在编写这些命令时使用了哪种编程语言?它们是如何编译的?

我的理解::

Shell is a program which takes command; ** does this mean that it interprets those commands(like ls is interpreted by shell program)?**

还有一个问题,Shell程序用什么语言编写?

谢谢!

3 个答案:

答案 0 :(得分:5)

这些程序主要使用C编程语言编写,就像linux内核一样。

答案 1 :(得分:4)

linux中的大多数基本实用程序都是用C编写的。这可以在busybox source code中验证,它支持大多数用C编写的基本linux命令实用程序。 所以ls,cd等命令在c

shell如何解释检查下面的链接

在操作系统中有一个叫做shell的特殊程序。 shell接受人类可读的命令,并将它们转换为内核可以读取和处理的内容。

http://www.math.iitb.ac.in/resources/manuals/Unix_Unleashed/Vol_1/ch08.htm

答案 2 :(得分:1)

程序是用任何语言编写的普通可执行文件(主要是C语言)。

shell输入的命令只是一个字符串。然后它查找对shell具有特殊含义的某些字符序列,例如$后跟一个单词的环境变量或>后跟路径的重定向。在执行此替换之后,它具有一个字符串,该字符串在空格上分割以生成可执行文件和参数的名称。然后,shell将在环境变量PATH中的目录列表中搜索可执行文件。然后,shell使用系统调用从带有参数的可执行文件创建进程。

例如,为了执行命令ls $HOME,shell首先会识别出$HOME是一个环境变量,并在此情况下用/home/user替换它的值ls /home/user离开命令ls }。然后它将命令拆分到空格上以获取可执行文件名/home/user和参数ls。 shell找到通常/bin/ls匹配{{1}}的第一个可执行文件。然后使用ether,spawn()/ posix_spawn()或fork()和exec()系统调用来创建新进程。