Linux的Shell编程——认识BATH这个Shell

Linux的Shell编程——认识BATH这个Shell

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

什么是Shell

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

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

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

在Linux中操做的命令行界面就是Linux的Shell,这里的Shell主要指的是Bash。工具

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的主要识别名称。spa

虽然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,因此不能登陆系统。

相关文章
相关标签/搜索