Unix/Linux 系统中的 shell 程序
作者 佚名技术
来源 Linux系统
浏览
发布时间 2012-05-17
Unix/Linux 中的 shell 机制
对于初次接触 Unix/Linux 系统的同学来说,Unix/Linux 系统与 Windows 系统最大的不同就是,操作 Unix/Linux 系统更多时候不是使用 GUI 图形界面而是使用 shell 命令行.那么,作为 Unix/Linux 系统的标志性建筑,shell 机制究竟是什么呢?
shell 是功能强大的命令解释程序,是 Unix/Linux 系统面向用户的接口界面.但是,shell 程序仅仅是操作系统的一部分,是用以与系统内核进行交互的工具,并不是操作系统的核心组成部分.程序员可以根据需要编写符合接口规范的 shell 程序.
我们分析一下 Unix/Linux 系统的启动登陆过程,就可以更清楚的了解 shell 程序在 Unix/Linux 系统中的地位了.
当 Unix/Linux 系统启动时,操作系统的内核部分被装入内存,其余部分仍在硬盘上,只有当用户请求执行时才会被加载到内存中.Unix/Linux 系统完成启动后,由内核中的 init 进程激活 getty 进程,getty 进程在相应的终端上显示“login: ”提示,等待用户登录.当用户输入用户名时,getty 进程读取用户输入并启动 login 进程,由 login 进程完成整个登陆过程.用户完成登录后,login 进程根据启动配置文件,启动与该登录用户相对应的“默认 shell ”.此时,shell 进程被启动,用户可以通过 shell 终端与系统内核进行交互.
从 Unix/Linux 系统的启动过程可以看出,shell 程序并非神秘无比,而是一种“长相奇特”的“普通的”、“用以与内核进行交互”的“应用程序”.
各种各样的 shell
和 Unix/Linux 中的其它程序一样,shell 也仅仅是一个程序,在 Unix/Linux 系统中并没有特权.这也是为什么 Unix/Linux 系统中出现各种各样 shell 的原因.
/bin/bash /sbin/nologin /bin/bash2 /bin/ash /bin/bsh /bin/tcsh /bin/csh可以看出来,这其实是一个 shell 程序文件的列表.一般来说,/bin 和 /sbin 目录都在环境变量 PATH 中.为了切换为我们喜欢的 shell 种类,(我们已经知道,shell 也仅仅是一种与系统进行交互的程序),我们只需要在命令提示符下输入 shell 在 /bin 和 /sbin 目录中的相应名称即可. 我在使用哪个 shell Unix/Linux 系统极少被重新启动,多个对 shell 有不同爱好的管理员可能操纵过计算机,我们姑且假设他们都使用相同的管理帐号.于是,这就产生了一个问题,我的终端上究竟运行着什么样的 shell? 针对这个问题,我在 Google 上搜寻了一下,有各种各样的答案.有一个回答是 echo $SHELL 我觉得这是不对的,SHELL 是环境变量,在整个会话中都不回改变,它表示的是登录用户的“默认 shell ”.还有人说用 cat /etc/passwd 这样得到的结果也是登录用户的“默认 shell ”,很显然也不能解决上述问题.
|
||||
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
上一篇: 备忘下一篇: 重头再来之启动关机,在线救助与执行命令的方式
关于Unix/Linux 系统中的 shell 程序的所有评论