关于第一个问题,什么是shell
介绍
你可以做许多事情而不必知道它们实际上如何运作。比如,你不必懂得发动机燃烧的物理原理就可以开汽车。缺乏电子知识也不会阻止
你用CD机听音乐。不知道什么是Shell和它的工作原理,你还是可以使用UNIX。但是,知道这些你可以更好地利用UNIX。
一个UNIX系统有三种具有代表性的Shell可用:Bourne
shell,Korn shell,C shells。它们会在11,12,13章讨论。在这一章中,你会学到:
什么是Shell
Shell可以为你做什么
Shell和整个系统的关系
内核与Shell
坚果的壳保护其内部的核,同样一个UNIX
shell提供一个外设的保护层。当你启动一台基于UNIX的计算机时,UNIX的程序被调入计算机的内存里,直到你关机。这个程序叫做内
核(kernel),它执行许多底级和系统级的工作。内核有责任解释基本指令并将其送到处理器。内核也负责运行和调度进程,以及执行所
有的输入输出。内核是UNIX系统的心脏,内核有且只有一个。
你也许对内核职责的关键性有点迷惑,而内核指令同样的复杂和高技术性。为了对用户屏蔽内核的复杂性,也为了保护内核以免用户误操
作造成损害,在内核的周围建了一个外壳(shell)。用户向shell提出请求,shell解释并将请求传给内核。这一节剩下的部分解释这个外层
是如何建立的。
一旦内核调入内存,他就准备执行用户的请求。然而,用户首先得连接登录,然后发出请求。不管怎样,用户登录,内核必须知道用户是
谁以及如何与他通话。为了做到这点,内核调用两个特殊的程序,getty和login.对应每个用户的登录点--通常称为一个tty--内核调用
getty程序。这个过程被称为spawning(spawn原意是产卵)。getty显示一个登录提示,接着不断地监视通话点等待用户名的输入。当
getty取得任何输入时,它便调用login程序。login建立用户的身份并验证他登录的权利。login程序检查password(密码)文件。如果用
户输入的密码不正确,控制将从登录点返回到getty。如果正确,login调用password文件里用户条目中所记录的程序并将控制交给它。这
个程序也许是一个字处理软件或者是电子表格程序,不过一般是被称为shell的程序。
假设有四个用户已经登录进系统。这四个用户中,有两个正使用Bourne shell,一个使用Korn
shell,还有一个使用电子表格程序。每一个用户都得到一份shell的拷贝以服务它的请求,但是内核只有一个。使用shell不会阻碍用户使用
电子表格或别的程序,但那些程序是运行在活动的shell下的。shell是一个单一用户专用的程序,它在用户和UNIX内核之间提供了一个界
面。
你不必一定要使用shell来存取UNIX。上面的例子中,有个用户使用电子表格取代了shell。当这个用户登录进来时,电子表格程序启动。
当它退出电子表格程序时,他也就退出了系统。当强调安全性或者希望将用户与任何UNIX的界面屏蔽开时,这个技术挺有用。缺点是用
户不能使用mail或其他UNIX的功能。
因为login后可以执行任何程序--shell只是简单的一个程序--你就有可能编写自己的shell。事实上,三个独立开发的shell已经成为UNIX
标准的一部分。它们是:
Bourne shell,由Stephen Bourne开发
Korn shell,由David Korn开发
C shell,由Bill Joy开发
shell的多样性使你可以选择最适合你或者你感到最亲近的界面。
shell的功能
不过你选择哪个标准的shell并没有多大关系,因为三个shell都有相同的目的:在UNIX下为用户提供一个界面。为了达到这个目标,三个
shell都提供了相同的基本功能:
命令行解释功能
启动程序
输入输出重定向
管道连接
文件名置换
变量维护
环境控制
shell编程
命令行解释
当你登录进来,启动一个交互式的shell时,你会看到一个shell提示,通常是$,%或者#符号的形式。当你在提示符下敲进一行字符后,
shell就试图解释它。shell提示符下的输入有时被称为一个命令行。命令行的基本格式是
command arguments
命令名 参数(一个或多个))
command(命令)是可执行的UNIX命令,程序,实用工具,或shell程序。arguments(参数)被传递给执行程序。大多数的UNIX实
介绍
你可以做许多事情而不必知道它们实际上如何运作。比如,你不必懂得发动机燃烧的物理原理就可以开汽车。缺乏电子知识也不会阻止
你用CD机听音乐。不知道什么是Shell和它的工作原理,你还是可以使用UNIX。但是,知道这些你可以更好地利用UNIX。
一个UNIX系统有三种具有代表性的Shell可用:Bourne
shell,Korn shell,C shells。它们会在11,12,13章讨论。在这一章中,你会学到:
什么是Shell
Shell可以为你做什么
Shell和整个系统的关系
内核与Shell
坚果的壳保护其内部的核,同样一个UNIX
shell提供一个外设的保护层。当你启动一台基于UNIX的计算机时,UNIX的程序被调入计算机的内存里,直到你关机。这个程序叫做内
核(kernel),它执行许多底级和系统级的工作。内核有责任解释基本指令并将其送到处理器。内核也负责运行和调度进程,以及执行所
有的输入输出。内核是UNIX系统的心脏,内核有且只有一个。
你也许对内核职责的关键性有点迷惑,而内核指令同样的复杂和高技术性。为了对用户屏蔽内核的复杂性,也为了保护内核以免用户误操
作造成损害,在内核的周围建了一个外壳(shell)。用户向shell提出请求,shell解释并将请求传给内核。这一节剩下的部分解释这个外层
是如何建立的。
一旦内核调入内存,他就准备执行用户的请求。然而,用户首先得连接登录,然后发出请求。不管怎样,用户登录,内核必须知道用户是
谁以及如何与他通话。为了做到这点,内核调用两个特殊的程序,getty和login.对应每个用户的登录点--通常称为一个tty--内核调用
getty程序。这个过程被称为spawning(spawn原意是产卵)。getty显示一个登录提示,接着不断地监视通话点等待用户名的输入。当
getty取得任何输入时,它便调用login程序。login建立用户的身份并验证他登录的权利。login程序检查password(密码)文件。如果用
户输入的密码不正确,控制将从登录点返回到getty。如果正确,login调用password文件里用户条目中所记录的程序并将控制交给它。这
个程序也许是一个字处理软件或者是电子表格程序,不过一般是被称为shell的程序。
假设有四个用户已经登录进系统。这四个用户中,有两个正使用Bourne shell,一个使用Korn
shell,还有一个使用电子表格程序。每一个用户都得到一份shell的拷贝以服务它的请求,但是内核只有一个。使用shell不会阻碍用户使用
电子表格或别的程序,但那些程序是运行在活动的shell下的。shell是一个单一用户专用的程序,它在用户和UNIX内核之间提供了一个界
面。
你不必一定要使用shell来存取UNIX。上面的例子中,有个用户使用电子表格取代了shell。当这个用户登录进来时,电子表格程序启动。
当它退出电子表格程序时,他也就退出了系统。当强调安全性或者希望将用户与任何UNIX的界面屏蔽开时,这个技术挺有用。缺点是用
户不能使用mail或其他UNIX的功能。
因为login后可以执行任何程序--shell只是简单的一个程序--你就有可能编写自己的shell。事实上,三个独立开发的shell已经成为UNIX
标准的一部分。它们是:
Bourne shell,由Stephen Bourne开发
Korn shell,由David Korn开发
C shell,由Bill Joy开发
shell的多样性使你可以选择最适合你或者你感到最亲近的界面。
shell的功能
不过你选择哪个标准的shell并没有多大关系,因为三个shell都有相同的目的:在UNIX下为用户提供一个界面。为了达到这个目标,三个
shell都提供了相同的基本功能:
命令行解释功能
启动程序
输入输出重定向
管道连接
文件名置换
变量维护
环境控制
shell编程
命令行解释
当你登录进来,启动一个交互式的shell时,你会看到一个shell提示,通常是$,%或者#符号的形式。当你在提示符下敲进一行字符后,
shell就试图解释它。shell提示符下的输入有时被称为一个命令行。命令行的基本格式是
command arguments
命令名 参数(一个或多个))
command(命令)是可执行的UNIX命令,程序,实用工具,或shell程序。arguments(参数)被传递给执行程序。大多数的UNIX实
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
- 上一篇:shell编程基础···初学者必用
- 下一篇:没有了
