shell本身的涵义
shell本身是计算机壳层,是指”提供使用者使用界面”的软件(命令解析器),分为图形界面shell(GUI shell)和命令行式shell(CLI shell)。
在Linux中的涵义
①shell是一个命令解释器,为用户提供可以向Linux内核发送请求以便运行程序的界面级系统程序,用户可以用shell启动、挂起、停止、编写一些程序。
(在计算机中计算机不能直接识别输入的英文命令,依赖ASCII码表翻译成二进制,由shell完成这项工作,计算机输出的二进制信息也是由shell来完成翻译。shell即是相对于”核”的”壳”概念,在Linux中操作的界面就是shell,它是用户和内核的桥梁。)
②shell还是一种解释执行的脚本语言(脚本语言不需要编译,由解释器解释执行),在shell中可以直接调用Linux系统命令。
Linux Shell主要分类
[1]Bourne Shell。Bourne家族主要包括sh,ksh,Bash,psh,zsh。现在的Linux用的基本都是Bash。
[2]C Shell,主要在BSD版的Unix系统中使用,其语法和C语言类似而得此名。C家族主要包括csh,tcsh。
调用SHELL环境变量就可以看到当前系统使用的shell名字:
[root@localhost ~]# echo $SHELL
/bin/bash
查看可以使用哪些shell:
[root@localhost ~]# vi /etc/shells
进入sh这个shell:
[root@localhost ~]# sh
sh-4.1#
这个”sh-4.1#”就是sh这个shell的提示符。sh非常古老,但是在Linux的一些特殊模式中,如系统的光盘修复模式中用的就是这样的简单shell,因为它占用的系统资源更少。
退出这个shell:
sh-4.1# exit
exit
[root@localhost ~]#
进入csh这个shell:
[root@localhost ~]# csh
[root@localhost ~]#
可以看到csh和bash的提示符是一样的,退出还是用exit:
[root@localhost ~]# exit
exit
[root@localhost ~]#
这样的调用不是平级切换,而是有父子关系的,如在默认的开机的bash下可以再调用一个bash(还是直接输bash就可以),这样之前的bash就是父shell,这个新的bash就是子shell。这就像windows中开机运行的shell是windows explore图形操作界面,然后在这里又可以点开cmd打开一个子的操作界面。
Linux是可以这样一级一级调用其它的操作终端的,在有些特殊的操作中这样是有意义的。