shell简介

      UNIX是一个多用户、多任务的操作系统。unix当初设计目标是允许大量程序员同时访问计算机,共享它的资源。它非常简单但是功能强大、通用并且可移植。

      UNIX系统的心脏是内核:一个系统引导时加载的程序。内核用于与硬件设备打交道,调度任务,管理内存和辅存。正是由于UNIX系统这种精炼特性,众多小而简单的工具和实用程序被开发出来,其中最重要的工具之一就是shell。

      shell是一种特殊的程序。它是用户与UNIX/Linux系统的心脏(一个称作内核的程序)之间的接口。内核在系统引导时载入内存,管理系统直至关机。它创建和控制进程,管理内存、文件系统和通信等。内核以外的所有其他程序(包括shell程序)都保存在磁盘上。内核将这些程序加载到内存中运行,并在它们终止后清理系统。shell是一个工具程序,在用户登陆后系统启动。它解释并运行由命令行或脚本文件输入的命令,从而实现用户与内核间的交互。

      当用户登陆成功后,系统会启动一个交互式的shell来提示用户输入指令。用户键入命令后,shell开始执行任务:先解析命令行,再处理通配符、重定向、管道和作业控制,然后查找命令,找到后开始执行。UNIX/Linux初学者大都通过交互方式使用shell,即在命令提示符后逐条输入和执行命令。

      如果总要键入一组大致相同的命令,自然会希望将这些工作自动化。把命令写到一个文件中,即脚本文件,然后执行该文件。更复杂的脚本还包括用于实现判断、循环、文件测试等功能的程序结构。当用户从脚本中执行命令时,shell被视作一种编程语言。

      shell分类:UNIX系统大都支持3种主流的shell,它们是Bourne shell、C shell和Korn shell。交互运行时这3种shell非常相似,但作为脚本语言,它们在语法和效率上有一定的差别。

      Linux是一个与Unix兼容的操作系统内核,它编写时是按照开发unix系统的标准POSIX来开发的,所以说linux是一个类unix系统,linux开发出来以后,其源码是公开的,被世界各地的自由软件人员不断改进而壮大。

      Linux的shell:Linux上默认的shell是GUN bash,这是一种增强的Bourne shell,默认的Bash提示符为美元符号$。要想知道自己所使用的Linux有哪些版本的shell,可以查看/etc/shell。Linux上的/etc/shell文件中包含所有在当前linux环境中可用的shell程序。常用的版本包括bash(Bourne Again shell)、tcsh(TC shell)和ksh(Korn shell)。

      要知道在自己所使用的Linux中有哪些版本的shell,可以查看/etc/shell(s)文件。

      $cat /etc/shell

      /bin/bash

      /bin/sh

      /bin/ash

      /bin/bsh

      /bin/tcsh

      /bin/csh

      /bin/ksh

      /bin/zsh

      系统启动与登录shell:系统启动时运行的第一个进程是init。每个进程都有一个称为PID的进程标识号。init是第一个进程,所以它的PID是1。init进程初始化系统,启动另一个进程来打开终端线路并设置标准输入,标准输出和标准错误,三者都与终端关联。标准输入通常来自键盘,标准输出和标准错误输出则显示在屏幕上。完成这些设置后,终端上就会出现登陆提示。

      系统会在用户键入用户名后提示输入口令。程序/bin/login通过检查passwd文件内容来确认用户的身份。如果所键入的用户名存在,它会运行一个密码程序来对所键入的口令进行确认。口令验证通过后,login程序设置初始环境。初始环境是一组定义工作环境的变量,这组变量将传给shell。变量HOME、SHELL、USER和LOGNAME根据passwd文件中的信息进行赋值。HOME被设为用户的主目录,SHELL则被设为登陆shell的名字,即passwd文件中的最后一列。USER和LOGNAME被赋值为登录名。login程序结束时执行它在passwd文件最后一列中找到的程序。这个程序通常是一个shell,被执行的shell称为登陆shell。

      shell启动后,先查找由系统管理员设置的系统级的初始化文件,然后在用户的主目录中查找是否存在对应的shell初始化文件。如果存在,就会执行这些文件。这些初始化文件用于进一步定制用户环境。在执行完这些初始化文件之后,就可以启动窗口界面的开发环境。接着,将显示一个虚拟桌面,该桌面的显示基于配置、控制台以及显示shell提示符的伪终端,此时shell正处于等待输入状态。

      登陆后,系统可能直接进入图形用户界面(GUI),也可能启动进入带有shell提示符的终端。如果使用的是linux,shell通常会创建另一个进程来启动X Windows系统。X Windows启动之后,将执行窗口管理器进程,并提供一个虚拟桌面,这个虚拟桌面包含一个控制台和一些终端,每个终端都会显示一个shell提示符。

汇总

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值