• LinuxShell——认识BATH这个Shell


    LinuxShell——认识BATH这个Shell

    摘要:本文主要了解了Linux系统中的Shell,以及什么是BATH。

    什么是Shell

    Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来启动、挂起、停止甚至编写一些程序。

    Shell处在内核与外层应用程序之间,起着协调用户与系统的一致性、在用户与系统之间进行交互的作用。Shell接收用户输入的命令,并把用户的命令从类似abed的ASCII码解释为类似0101的机器语言,然后把命令提交到系统内核处理,当内核处理完毕之后,把处理结果再通过Shell返回给用户。

    与一般命令相比,Shell除了是一个命令行解释器,同时还是一门功能强大的编程语言,易编写,易调试,灵活性较强。作为一种命令级语言,Shell是解释性的,组合功能很强,与操作系统有密切的关系,可以在Shell脚本中直接使用系统命令。大多数Linux系统的启动相关文件(一般在/etc/rc.d目录下)都是使用Shell脚本编写的。

    在Linux中操作的命令行界面就是Linux的Shell,这里的Shell主要指的是BATH。

    Shell的分类

    目前Shell的版本有很多种,如Bourne Shell、C Shell、BASH、KSH、TCSH等,它们各有特点。

    最重要的Shell是Bourne Shell,这个命名是为了纪念此Shell的发明者Steven Bourne。从1979年起,UNIX就开始使用Bourne Shell。Bourne Shell的主文件名为sh,开发人员便以sh作为Bourne Shell的主要识别名称。

    虽然Linux与UNIX一样,可以支持多种Shell,但Bourne Shell的重要地位至今仍然没有改变,许多UNIX系统中仍然使用sh作为重要的管理工具。它的工作从开机到关机,几乎无所不包。在Linux中,用户Shell主要是BASH,但在启动脚本、编辑等很多工作中仍然使用Bourne Shell。

    C Shell是广为流行的Shell变种。C Shell主要在BSD版的UNIX系统中使用,发明者是柏克莱大学的Bill Joy。C Shell因为其语法和C语言类似而得名,这也使得UNIX的系统工程师在学习C Shell时感到相当方便。

    Bourne Shell和C Shell形成了Shell的两大主流派别,后来的变种大都吸取这两种Shell的特点,如KSH、TCSH及BASH。

    BASHShell是GNU计划的重要工具之一,也是GNU系统中标准的Shell。BASH与sh兼容,所以许多早期开发出来的Bourne Shell程序都可以继续在BASH中运行。现在使用的Linux就使用BASH作为用户的基本Shell。

    BASH于1988年发布,并在1995-1996年推出BASH 2.0。在这之前,广为使用的版本是1.14,BASH 2.0增加了许多新的功能,以及具备更好的兼容性。

    注意,Shell的两种主要语法类型有Bourne和C,这两种语法彼此不兼容。Boume家族主要包括sh、KSH、BASH、PSH、ZSH,C家族主要包括CSH、TCSH(BASH和ZSH在不同程序上支持CSH的语法)。

    本章讲述的脚本编程就是在BASH环境中进行的。不过,在Linux中除了可以支持BASH,还可以支持很多其他的Shell。我们可以通过/etc/shells文件来査询Linux支持的Shell。命令如下:

    1 [root@localhost ~]# cat /etc/shells 
    2 /bin/sh
    3 /bin/bash
    4 /sbin/nologin
    5 /usr/bin/sh
    6 /usr/bin/bash
    7 /usr/sbin/nologin
    8 [root@localhost ~]# 

    在Linux中,这些Shell是可以任意切换的,命令如下:

    1 [root@localhost ~]# sh
    2 sh-4.2# ls
    3 anaconda-ks.cfg  test
    4 sh-4.2# exit
    5 exit
    6 [root@localhost ~]# 

    root用户和其他可以登录系统的普通用户的登录Shell都是/bin/bash,也就是Linux的标准Shell,所以这些用户登录之后可以执行权限允许范围内的所有命令。不过,所有的系统用户(伪用户)因为登录Shell是/sbin/ndogin,所以不能登录系统。

  • 相关阅读:
    python 计算 父亲节
    python 计算 母亲节
    python 计算 感恩节
    《AINLP年度阅读收藏清单》,2020-01-01,52nlp
    《命名实体识别 NER 论文综述:那些年,我们一起追过的却仍未知道的花名 (一)》,2020-05,龚俊民(昵称: 除夕)
    《How to Automate Manual Steps after SSH》2019-03,amitness
    《Back Translation for Text Augmentation with Google Sheets》,2020-02,amitness
    《BERT 的优秀变体:ALBERT 论文图解介绍》2020-05,作者:amitness,译者:ronghuaiyang
    《NLP中数据增强的综述,快速的生成大量的训练数据》2020-05,作者:amitness ,编译:ronghuaiyang
    《努力成为优秀的工程师》李航,2013-03
  • 原文地址:https://www.cnblogs.com/shamao/p/11177677.html
Copyright © 2020-2023  润新知