一、什么是shell
到底什么是shell呢?我相信,这个问题,应该困扰过很多人吧?那么今天,我们就来好好捋一下这个概念。
首先,从英文单词上来理解,是“壳”的意思,用于区别“核”的概念,有“壳”保护“核”的涵义;这就好比“鸡蛋壳”与“鸡蛋黄”。然后我们再从计算机的角度来理解一下,计算机由一组硬件组成,,而内核(kernel)是用来管理和操纵这些硬件让其工作的。那么内核总不能让用户随意操作吧!对于公司来说,总会有菜鸟入职的,让他们随意操作内核,很容易造成系统崩溃。๑乛◡乛๑
因此,在内核之上又开发了一层应用程序。用户可以通过这样的应用程序来指挥内核,让内核管理相应的硬件来完成我们的任务。这样可以与内核进行直接交互的程序,我们就可以称之为shell。
Linux系统上的shell,实际上就是用户与Linux系统内核之间的接口程序,一种交互性命令解释器。用户在提示符界面输入的每一个命令,都要经由shell这个解释器来解释,然后传给内核,内核再继续往下工作。同样shell也能接收内核的输出信息,展示给用户。shell独立于操作系统,这种设计让用户可以灵活选择适合自己的shell。
Linux系统下存在多个shell,可以查看 /etc/shells文件来知晓系统内安装的shell,不过,最常用的shell还是/bin/bash。这个也是系统默认使用的shell。
[michael@master ~]$ cat /etc/shells
/bin/sh <==Bourne Shell,已经被Bourne Again Shell取代
/bin/bash <==Bourne Again Shell,系统默认使用的shell,兼容了Bourne Shell,功能更强大
/sbin/nologin
/bin/dash
/bin/tcsh
/bin/csh
既然系统下有多个shell,我们应该有这样的问题需要思考:用户什么时候使用shell?用户使用的是哪一种shell呢?这两个问题,其实我们在讲解用户管理时,已经说到过了。还记得登录验证的工作流程吗?当输入密码后,会先验证/etc/passwd文件里是否有此用户名,如果有的话,就会读取uid和gid,再读取用户主目录和要使用的shell,密码校验成功后,就会获得这个shell开始工作了。
二、/bin/bash的简介
Linux系统下虽然有很多种shell,但是最常用的还是/bin/bash这个shell,同时也是市场上众多流行Linux版本默认使用的shell。/bin//bash在兼容/bin/sh的所有功能的同时,也有一些自己独特的功能。甚至可以说成bash已经完全取代了sh。那么bash都有哪些好用的功能呢,我来介绍一下吧。
1、命令记忆功能
这个功能真是非常的好用呢?因为bash能记住我们输入过的命令,因此,我们就可以通过“上、下键”来找到前一个或者是后一个命令。而bash记住命令的数量多达1000个,可以理解成你输入的命令bash几乎全都记录了下来。
这些命令暂时保存在内存中,当你成功注销当前用户时,这些命令就会存在主目录下的.bash_history文件中。
2、命令和文件名补全功能
正因为有了这个功能,用户少打了很多字母,同时也提高了书写的正确率,进而提高了工作效率。
在命令行的相应位置上,按两下Tab键,会有不同的效果,
第一个词后连按两下Tab键,是对命令进行查看或者补全
第二个词后连按两下Tab键,是对文件名进行查看或补全