LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1586|回复: 4

请问Linux的命令在内核的那个源文件中?

[复制链接]
发表于 2003-3-25 13:34:50 | 显示全部楼层 |阅读模式
如cp,ls等命令在源代码的哪些文件中,找不到啊?
还有就是如何增加一个新的命令?
谢谢!
发表于 2003-3-25 19:09:47 | 显示全部楼层
linux不是dos,这些命令是bash的内置命令。
发表于 2003-3-26 03:31:40 | 显示全部楼层
外壳的命令,不要在内核里面找啦。
就算是DOS,那DIR是COMMAND.COM里面的,也不是内核里面的。
 楼主| 发表于 2003-3-26 15:43:14 | 显示全部楼层
我得到的结果汇总,与大家共享
Linux的命令在内核的那个源文件中?如cp,ls等命令。

cp,ls等都属于应用程序,不属于内核。它们都不在内核里。

在RedHat系统里查找源程序的办法,比如ls:
1. 用 which 找到命令文件:
# which ls
/bin/ls <---- 命令文件
2. 用 rpm 看这个文件是属于哪个软件包:
# rpm -qf /bin/ls
fileutils-4.1-10 <--- 软件包
3. 找到源程序包:
fileutils-4.1-10 的源程序包:fileutils-4.1-10.src.rpm
或者在网上寻找fileutils的tar.gz
4. 安装源程序包。

要增加一个像ls这样的可执行文件,把它放在你的PATH里面的一个目录里就行了(最好放在你自己的~/bin里,不影响别人);你还可以用alias命令做命令缩写。

shell 也是应用程序,不是在系统启动时自动加载的,而是你login后开始执行的,你logout后就停止了。

一般来说,你的shell是/bin/bash,你可以用
# finger 你的用户名
来看你的shell 是什么,也可以去 /etc/passwd看用户每一行的最后一项。

shell和内核没有什么特别直接的接口,就是接受用户打入的命令,分析,然后启动别的应用程序。bash自己还有一些内部命令,你可以用man bash来查看。

------------------------------------------------------------------------------------------------
其实cp,ls是一个个的应用程序,这些程序通过在shell的命令行解释其对应的命令名并
转化为内核的一些操作,然后在通过一些参数调用内核中的函数!

shell对于内核来说是一个程序,一个进程,启动时加载的,它调用内核的方式是,内核提供一
系列的系统调用供它来调用,一般来说shell通过解释输入的操作,然后根据一些参数来调用
内核开放的系统调用来工作的。

shell有bsh、csh、bash……,他们也不会出现在内核的源码中,如果要看系统启动情况可以看看/usr/src/linux/Init/main.c,注意
line 578:execve("/bin/sh",argv_init,envp_init);
在系统初始化完成后提供一个shell

------------------------------------------------------------------------------------------------
ls,cp好象不是shell内置的命令。
cd等命令是shell里面支持的,没有可执行文件,有点象dos command的内部命令。
发表于 2003-3-27 14:59:31 | 显示全部楼层
没仔细看,误导兄弟了,sorry!...
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表