1、什么是shell:
Shell(壳)是一种用C语言编写的程序(命令解释器),是连接用户和Unix/Linux内核的桥梁。 它的功能和windows的图形界面是一样的,只不过操作的形式不一样。 它通过建立文件的形式并行的运行多个程序,帮助用户完成很多工作。
Shell即是一种命令语言,也是一种程序设计语言。 作为命令语言的时候,shell的工作形式是交互式的,用户输入一行命令,shell根据命令内容给出用户反馈信息; 作为程序设计语言时,shell的工作形式是非交互式的,在它的程序语言中,提供了许多参数和变量,并具有在高级程序语言中才具有的控制结构(if case while ),但是,shell程序不需要编译,而是从脚本文件中读取一行命令,执行一行,所以又称为解释行语言。
linux操作系统结构主要体现的是:用户空间和内核空间之间进行信息交换时,系统调用起着关键性的作用。 shell在这里,上通各种应用程序(以文件的形式存放在磁盘中)下通系统调用,好像胶水一样,将各种小功能程序和内核粘了起来,并在粘的节点处开了个接口,这使得各种小功能程序可以通过这个接口协同工作,从而增强了各个程序的功能。我们也知道,Shell是可编程的,它可以执行符合Shell语法的文本,往往很短的代码就可实现非常强大的功能,原因是这些shell语句通常都对系统调用做了一层封装。
2、linux中shell的分类:
在文件/etc/shells中可以查看当前主机中包含的shell类型
[root@localhost ~]# cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
/bin/tcsh
/bin/csh
可以使用命令echo $SHELL 查看当前使用的shell类型
[root@localhost ~]# echo $SHELL
/bin/bash
3、#!/bin/sh 的含义:
shell中#一般表示注释的意思,所以很多时候认为#!也是注释,但实际上不是,和c语言中头文件一样是声明文件的路径。
#! /bin/sh 是指此脚本使用/bin/sh 来执行
#!是特殊的表示符,其后面跟的是解释此脚本的shell的路径,如果没有声明,则脚本将在默认的shell中执行,默认shell是由用户所在的系统定义为执行shell