内核和Shell是完完全全的两码事!内核提供的是系统调用,是一组API。客户程序中凡是涉及到内核功能的事情,如启动和终止程序、打开和关闭文件等等,都需要通过系统调用向内核发出请求,让内核来代之实现。API是程序与程序的接口,命令行界面主要是程序和用户的接口,两者有非常大的区别。hart0345 写了:解释得好@!@通俗易懂!~但实际上shell就是linux的内核啊!实际上如果可能可以不使用外部命令全部弄到内核FFFrog 写了:内部命令存在于Shell之中吧。你用不同的Shell,就会有不同版本的内部命令。比如bash的history就是内部命令。cd一般也是内部命令。因为在Linux下你可以选择使用任一种Shell,那么Shell也不是什么神圣不可侵犯的东西。你完全可以自己定制、甚至编写一个Shell出来。hart0345 写了:谢谢帮我大忙了!~linux下大部分命令是外部命令,也就是说还是存在内部命令的!这些内部命令是不是与dos的commendFFFrog 写了:DOS命令行的功能有限。把Linux命令往DOS名称上去靠,也只会改掉它的一小部分命令而已。其他大部分的、体现Linux系统优势的有用命令,无法找到与DOS命令对应的名字。
类似的,基本功能相同的Linux命令和DOS命令,他们的参数集无法一一对应。那些拥有N多实用参数的命令,怎么往DOS格式上去靠?
另外,改命令名称不用动内核。甚至都不用动Shell。Linux下大部分的命令是外部命令,每个命令对应单独的二进制文件。
一样存在于系统不允许更改的文件中呢?
你要知道这个“大部分”是相当地大的Linux的内部命令不是对应于DOS的COMMEND那样的功能范围。甚至连ls命令不是内含于Shell之中的!
有一些Shell如Busy Box,则以内部命令的形式实现了包括ls等在内的常用命令。所以内外之分不是绝对的。
应该也很方便啊或者内核少留命令全部依靠外部调用这样比较diy啊~既然可以随便换还允许自由编写那就应该等同于自定一样了么!难怪看到的几个版本的linux总有部分命令功能一样却不同拼写!~
请教
但那么如何开始学习内核呢?从那里着手比较合适,我是盲啊给个指点完全没有什么基础!~
总有存在于众多linux版本中不成文的标准吧总有习惯性的东西是人们不愿更改的这类命令应该就属于标准化的东西了!
感觉你对基本概念的理解比较混乱。建议先不要想着开始学习内核了。买一本老外写的、比较经典的操作系统原理教材,比如《操作系统概念》或者《操作系统:精髓与设计原理》、《现代操作系统》等,从头到尾读一遍,对其原理有个系统了解。在此基础上,再选一本Linux内核分析的入门书看,理解Linux内核的设计与实现。