在linux/unix操作系统中存在多种多类型的shell,而多数linux/unix系统默认使用shell为bash。所谓shell,是一种解释器,也是一种脚本语言,在每个shell脚本中都包含一个或者多个命令。

       在计算机科学中,shell是指为使用者提供使用界面的软件(命令解释器)。它接收来自用户的命令,然后调用相应的应用程序处理用户键入的命令。同时shell也是一种程序设计语言,作为程序设计语言的shell,使用交互的方式解释和执行用户输入的命令,或自动解释和执行预先设定好的一连串命令。

       更简单地说,shell是linux系统内核与用户之间的接口,它为用户提供使用操作系统的界面。如果把linux内核(kernel)比作球体的中心,那么shell就是这个球体的外层。

       形象地说,shell是介于操作系统内核与用户之间的一个绝缘层。同时,shell是一种强大的计算机程序设计语言,通过shell就能够轻松调用其他程序并对它们的输出进行处理,这种能力使得shell成为文本处理任务的一个理想工具。

      linux系统下的每个shell程序被称为一个脚本。脚本是一种很容易使用的工具。通过它可以将系统调用、公共程序、工具以及编译过的二进制程序“粘合”在一起并建立应用。而事实上,所有的linux/unix命令和工具以及公共程序,对于shell脚本来说都是可调用的。而shell的内建命令,也会给脚本添加强有力的支持和灵活性。shell脚本对于管理系统任务和其他重复性工作的例程来说,都表现得非常好。

查看可以的登陆shell的列表:

gyz@debian:~$ cat /etc/shells 
# /etc/shells: valid login shells
/bin/sh
/bin/dash
/bin/bash
/bin/rbash

查看当前系统登陆使用的是哪个shell,

gyz@debian:~$ echo $SHELL
/bin/bash

 切换系统登录的shell,

gyz@debian:~$ chsh -s /bin/bash
密码:

 切换后,需要重启,重启之后的shell如下:

$ echo $SHELL
/bin/dash

参考:陈祥琳 编《linux shell脚本从入门到精通》 机械工业出版社