一、Shell的概念
该程序的作用就是接收用户的操作(点击图标、输入命令),并进行简单的处理,然后再传递给内核。如此一来,用户和内核之间就多了一层“代理”,这层“代理”既简化了用户的操作,也保护了内核。
这层“代理”,在Linux下,这个命令行程序叫做 Shell。
Shell 是将内核、程序和用户连接了起来。
- Shell 是一种脚本语言,我们编写完源码直接运行源码。
- Shell 主要用来开发一些实用的、自动化的小工具。
- Shell 脚本很适合处理纯文本类型的数据。
- Shell 脚本的优势在于处理偏操作系统底层的业务。
- 对于一些常见的系统脚本,使用 Shell 更符合 Linux 运维简单、易用、高效的三大原则。
二、几种常见的Shell
常见的 Shell 有 sh、bash、csh、tcsh、ash 等。
- sh:是 UNIX 上的标准 shell,很多 UNIX 版本都配有 sh。sh 是第一个流行的 Shell。
- csh:这个 shell 的语法有点类似C语言,所以才得名为 C shell ,简称为 csh。
- tsh:是 csh 的增强版,加入了命令补全功能,提供了更加强大的语法支持。
- ash:简单的轻量级的 Shell,占用资源少,适合运行于低内存环境。
- bash:是 Linux 的默认 shell。
三、查看Shell
Shell 是一个程序,一般都是放在/bin或者/user/bin目录下。
当前 Linux 系统可用的 Shell 都记录在/etc/shells文件中。
/etc/shells是一个纯文本文件,可以使用 cat 命令查看它。
代码如下:
$ cat /etc/shells
输出效果:
/bin/sh往往是指向/bin/bash的符号链接。
查看当前 Linux 的默认 Shell,那么可以输出 SHELL 环境变量:
$ echo $SHELL
输出效果:
证明输出结果默认的 Shell 是 bash。
补充知识点:
①/etc是什么意思?为什么shells在etc下?
答:etc,是and so on的意思来源于法语的 et cetera,也就是等等的意思。至于为什么在/etc下面存放配置文件, 按照原始的UNIX的说法(linux文件结构参考UNIX的教学实现MINIX) 这下面放的都是一堆零零碎碎的东西, 就叫etc, 这其实是个历史遗留。
②cat /etc/shells是啥意思?
答:cat 命令用于连接文件并打印到标准输出设备上。总含义是查看计算机上可用的shell。
③echo $SHELL是啥意思?
答:echo是一个 Shell 命令,用来输出变量的值。SHELL是 Linux 系统中的环境变量,它指明了当前使用的 Shell 程序的位置,也就是使用的哪个 Shell。即输出环境变量SHELL的内容——/bin/bash。
SHELL是在别的地方定义过,如同C语言中变量一样,变量前面加上 $ 表示你要引用这个变量。