COD*_*ror 10 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)?**
Run Code Online (Sandbox Code Playgroud)
还有一个问题,Shell程序写的是什么语言?
谢谢!
vin*_*yal 10
linux 中的大多数基本实用程序都是用C.this编写的。您可以验证busybox source code其中支持大多数用C.编写的基本 linux 命令实用程序。所以像 ls,cd ...etc 这样的命令在c
shell 将如何解释以下链接中的检查
在操作系统中有一个特殊的程序叫做shell。shell 接受人类可读的命令并将它们转换为内核可以读取和处理的内容。
http://www.math.iitb.ac.in/resources/manuals/Unix_Unleashed/Vol_1/ch08.htm
这些程序是用任何语言(主要是 C)编写的普通可执行文件。
shell 接受输入的命令,该命令只是一个字符串。然后,它查找对 shell 有特殊含义的某些字符序列,例如后跟$单词的环境变量或后跟>路径的重定向。执行此替换后,它会生成一个字符串,该字符串按空格分割以生成可执行文件的名称和参数。然后 shell 将在环境变量 PATH 的目录列表中搜索可执行文件。然后,shell 使用系统调用从带有参数的可执行文件创建进程。
例如,要执行命令,ls $HOMEshell 首先会识别出这$HOME是一个环境变量,并用它替换它的值,在这种情况下,/home/user会留下命令ls /home/user。然后它将命令拆分到空格上以获取可执行文件名称ls和参数/home/user。shellls通常会找到第一个匹配的可执行文件/bin/ls。然后,它使用 spawn()/ posix_spawn() 或 fork() 和 exec() 系统调用来创建新进程。
| 归档时间: |
|
| 查看次数: |
5013 次 |
| 最近记录: |