和 Shell 的区别

Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。

Shell 即是一种命令语言,又是一种程序设计语言。

Shell 是指一种应用程序,这个应用程序提供了一些命令,用户可以通过这些命令去访问操作系统内核的服务。

Ken Thompson 的 sh 是第一种 Unix Shell,Windows Explorer 是一个典型的 Shell。

Shell 在线工具

Shell 脚本,是一种为 Shell 编写的脚本程序,类似 Windows 的 bat 脚本,区别在于 bat 是用于操作 Windows 操作系统,而 Shell 脚本用于操作 Linux 系统。

脚本的编程环境

  • 文本编辑器
  • 能解释执行的脚本解释器
    常见的解释器有:
    Bourne Shell (/usr/bin/sh 或 /bin/sh)
    Bourne Again Shell (/bin/bash)
    C Shell (/usr/bin/csh)
    K Shell (/usr/bin/ksh)
    Shell for Root (/sbin/sh)
    ……

一般使用 Bash,也就是 Bourne Again Shell,Bash 也是大多数 Linux 系统默认的 Shell。

Shell Script 开头的 #! 告诉系统解释此脚本文件的 Shell 程序路径,例如下面的 Shell Scirpt 执行路径为 /bin/bash

#!/bin/bash

第一个 Shell Script

打开文本编辑器(可以使用 vi/vim 或是 vs code 来编写),新建一个文件 test.sh,扩展名为 sh (sh 代表 shell),扩展名并不影响脚本执行。

#!/bin/bash
echo "Hello World !"

#! 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种 Shell。
echo 命令用于向窗口输出文本。

运行 Shell Script 有两种方法:

1. 作为可执行程序

将上面的代码保存为 test.sh,并 cd 到相应目录:

chmod +x ./test.sh
./test.sh

注意,一定要写成 ./test.sh,而不是 test.sh,运行其它二进制的程序也一样,直接写 test.sh,linux 系统会去 PATH 里寻找有没有叫 test.sh 的,而只有 /bin, /sbin, /usr/bin,/usr/sbin 等在 PATH 里,你的当前目录通常不在 PATH 里,所以写成 test.sh 是会找不到命令的,要用 ./test.sh 告诉系统说,就在当前目录找。

2. 作为解释器参数

/bin/sh test.sh

这种方式运行的脚本,不需要在脚本中的第一行指定解释器信息

运行效果如下图:

可执行程序
作为解释器参数