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。命令如下:

 [root@localhost ~]# cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
[root@localhost ~]#

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

 [root@localhost ~]# sh
sh-4.2# ls
anaconda-ks.cfg test
sh-4.2# exit
exit
[root@localhost ~]#

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

LinuxShell——认识BATH这个Shell的更多相关文章

  1. Linux-Shell编程之创建shell脚本并执行

    1.创建文件 touch myFirst.sh 2.编辑文件 vi myFirst.sh 点击键盘的字母 I 进行编辑,输入一下内容 #!/bin/bash # My First script ls ...

  2. Linux学习之路(三)Shell脚本初探

    本文参考链接:http://www.runoob.com/linux/linux-shell.html 基本说明 Shell脚本(shell script)是一种为shell编写的脚本程序.其中she ...

  3. Linux和Shell教程

    文档资料参考: 参考:http://www.runoob.com/linux/linux-tutorial.html 软件下载参考: centos 下载地址:https://www.centos.or ...

  4. 2018-2019 Exp2 后门原理与实践

    2018-2019 Exp2 后门原理与实践 目录 一.实验内容说明及基础问题回答 二.工具准备 查看WindowsIP和LinuxIP Windows获得Linuxshell Linux 获得Win ...

  5. LinuxShell脚本——认识Shell脚本

    LinuxShell脚本——认识Shell脚本 摘要:本文主要介绍了Shell脚本的一些基本知识. 什么是Shell脚本 shell脚本是利用shell的功能所写的一个程序,这个程序是使用纯文本文件, ...

  6. Batch pk Shell - WindowsBatch与LinuxShell比较 [变量符号和关键字]

    原文地址:WindowsBatch与LinuxShell比较[变量符号和关键字] 一 简单实例1)batch file @echo off rem output helloworld ::  outp ...

  7. LinuxShell脚本编程基础2-变量与数值运算、父shell和子shell

    1.变量和数值运算 Shell脚本的变量不需要声明的 对变量赋值有两种方式, 直接用“=” 或者用键盘输入值 #!/bin/bash name1="Jack" echo $name ...

  8. Linux-Shell脚本编程-学习-3-Shell编程-shell脚本基本格式

    前面两篇文章基本介绍了一部分linux下的基本命令,后面还需要大家自行了解下linux的文件系统的磁盘管理部分,这里就不在写了. 什么是shell编程,我也解释不来,什么是shell脚本了,我理解就是 ...

  9. shell(1):网络配置、BATH环境和通配符

    一.临时配置网络(ip,网关,dns) ifconfig查看网络配置 修改ip地址  ifconfig ens33 192.168.255.129/24 ens33网卡名称.192.168.255.1 ...

随机推荐

  1. Set a One-to-Many Relationship设置一对多关系 (XPO)

    In this lesson, you will learn how to set a one-to-many relationship between business objects. The C ...

  2. 【C#】学习笔记(2)委托Delegate相关

    泛型委托类型,同样是根据杨老师的视频来的. 直接上栗子

  3. nginx 配置不当导致目录遍历下载漏洞

    今天做百度杯的时候发现一个题很有意思. 点进题目,发现了一个js重定向到login.php,抓包发现请求的header中cookie=0,做过这种类似的题目,o==false,在请求头里面将cooki ...

  4. SRDC - ORA-22924 or ORA-1555 on LOB data: Checklist of Evidence to Supply (Doc ID 1682707.1)

    SRDC - ORA-22924 or ORA-1555 on LOB data: Checklist of Evidence to Supply (Doc ID 1682707.1) Action ...

  5. JSP知识总结

    day11 JSP入门 1 JSP概述 1.1 什么是JSP JSP(Java Server Pages)是JavaWeb服务器端的动态资源.它与html页面的作用是相同的,显示数据和获取数据. 1. ...

  6. 8.Python网络编程_多线程死锁

    死锁:指两个或两个以上的线程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去.此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死 ...

  7. unittest,requests,assertEqual实战演练

    请求方式:POST请求url:https://api.apiopen.top/developerLogin请求参数:名称 类型 必须 描述 示例name string 是 账号 peakchaopas ...

  8. 【day07】php

    一.数组(Array)  1.数组:一组数据的集合  2.数组的分类:           索引数组:键名称是整数,编号从0开始           关联数组:键名称是字符串  3.定义一维数组    ...

  9. Codeforces Round #554 (Div. 2) D 贪心 + 记忆化搜索

    https://codeforces.com/contest/1152/problem/D 题意 给你一个n代表合法括号序列的长度一半,一颗有所有合法括号序列构成的字典树上,选择最大的边集,边集的边没 ...

  10. SecureCRT 8.1工具下载和破解附Xshell6

    附教程:https://jingyan.baidu.com/article/eae078275917861fec548592.html 这一篇教程实际上已经说得非常明确了,只需要把注册机放在和secu ...