介绍

Linux Shell是Linux操作系统提供给用户访问linux内核的“外壳”,也就是说用户通过编写Shell命令发送给linux内核去执行,然后由内核去操作计算机硬件, 所以Shell命令是用户操作计算机硬件的桥梁。

Shell命令类似于windows系统的dos命令,它可算作是一门程序设计语言,里面含有变量、函数、逻辑控制语句等。

当用户下达指令给该操作系统的时候,实际上是把指令告诉shell,经过shell解释处理后让内核做出相应的动作。 系统的回应和输出的信息也由shell处理,然后显示在用户的屏幕上。

Shell解释器

查看linux系统centos支持的shell解析器:

1
cat /etc/shells

解析器类型:

解析器类型 介绍
/bin/sh Bourne Shell,是UNIX最初使用的shell;
/bin/bash Bourne Again Shell它是Bourne Shell的扩展,简称bash,是LinuxOS默认shell,有灵活和强大的编辑接口,同时又很友好的用户界面,交互性很强;
/sbin/nologin 未登录解析器, shell设置为/sbin/nologin 是用于控制用户禁止登陆系统的, 有时候有些服务,比如邮件服务,大部分都是用来接收主机的邮件而已,并不需要登陆
/bin/dash dash(Debian Almquist Shell),也是一种 Unix shell。它比 Bash 小,只需要较少的磁盘空间,但是它的对话性功能也较少,交互性较差。
/bin/csh C Shell是C语言风格Shell
/bin/tcsh 是C Shell的一个扩展版本。

查看centos的默认解析器:

1
echo $SHELL

Shell脚本

文件格式

  • 首行格式规范:首行需要设置Shell解析器的类型,一下代码表示设置当前shell脚本文件采用bash解析器运行脚本代码。

    1
    #!/bin/bash
  • 注释格式

    • 单行注释

      1
      # 注释内容
    • 多行注释

      1
      2
      3
      4
      :<<!
      注释内容1
      注释内容2
      !

创建一个名为helloworld.sh的shell脚本:

1
2
#!/bin/bash
echo "hello world"

执行方式

有三种执行脚本的方式:

  1. sh helloworld.sh,使用linux原生的shell解析器运行脚本文件
  2. bash helloworld.sh,使用bash解析器运行脚本文件
  3. ./helloworld.sh,直接执行脚本文件,因为脚本中已经配置了解析器,所以执行效果和方法2相同。

注意:如果使用方法3,需先开启脚本文件的可执行权限,chmod a+x helloworld.sh