跳至主要內容

什么是Shell脚本,Shell脚本的作用,如何用Shell脚本写Hello World

酷丁大约 3 分钟ShellLinuxhello world

什么是Shell脚本

Shell 脚本是一个纯文本文档,其中包含了一系列的命令,这些命令可以被 Shell 一行一行的读取并执行。

Shell的解释过程
Shell的解释过程

Shell是一个用C语言编写的程序,是用户使用Linux的桥梁,用户的大部分工作都是通过Shell完成的。Shell既是一种命令语言,又是一种程序设计语言。我们习惯上称的Shell是指Shell程序,也就是Shell解释器,一般来说,Shell编程也不指的是Shell开发本身。

Shell脚本是一种为Shell编写的脚本程序。我们可以把Shell脚本看做是一种批处理文件,Shell脚本通常以.sh结尾。

Shell脚本的作用

Shell脚本的作用是用来批量执行一系列的命令,这些命令可以是Linux系统命令,也可以是用户自定义的命令。

Shell环境

Shell环境是指Shell程序运行的环境,包括了一些环境变量和Shell的配置文件。

常见的有:[1]

  • 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)

Bourne Again Shell, 简称为 Bash,是大多数Linux系统默认的Shell。

补充:环境变量PATH

环境变量是Shell定义和赋初值的shell变量,用于查找路径、注册目录、终端类型/名称、用户名等。常用的系统环境变量如下:

环境变量说明
PS1命令行的一级提示符
PS2命令行的二级提示符
pwd当前工作目录
home当前用户的用户目录

如何用Shell脚本写Hello World

一般来说,我们可以用任何文本编辑器来编写Shell脚本,比如vimnanogedit等等。

最简单的Shell脚本是这样的:

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

这个脚本的第一行#!/bin/bash是用来指定脚本的解释器的,这里指定的是/bin/bash,也就是Bash Shell。
第二行echo "Hello World !"是用来输出Hello World !的。

但在一些地方,会见到这样的写法:[2]

#!/bin/bash
# Program:
# This program shows "Hello World!" in your screen.
# History:
# 2015/07/16 VBird First release
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
echo -e "Hello World! \a \n"
exit 0

其中,着重解释一下PATH这个变量,这个变量是用来指定Shell脚本的搜索路径的,也就是说,当我们在Shell脚本中执行一个命令时,Shell会按照这个变量的值去指定的路径中搜索这个命令,这样的好处是,当我们需要用到外部的程序(命令时),我们不需要指定这个程序的绝对路径,只需要在PATH中指定的路径中搜索就可以了。

当然,你可以很方便的在终端中执行echo $PATH来查看PATH的值。下面是我的PATH的值:

░▒▓ ~/Doc/webnote▓▒░ echo $PATH
/home/coldin04/.nvm/versions/node/v21.1.0/bin:/usr/condabin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/lib/jvm/default/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl

Shell脚本的执行

Shell脚本的执行有两种方式,一种是直接执行,一种是通过bash命令执行。

直接执行

直接执行的方式是通过./来执行,比如我们有一个脚本文件hello.sh,那么我们可以通过./hello.sh来执行这个脚本。

chmod +x hello.sh
./hello.sh

通过bash命令执行

通过bash命令执行的方式是通过bash命令来执行,比如我们有一个脚本文件hello.sh,那么我们可以通过bash hello.sh来执行这个脚本。

bash hello.sh

参考资料

菜鸟教程open in new window
鸟哥私房菜open in new window


  1. 来自菜鸟教程open in new window ↩︎

  2. 来自鸟哥私房菜open in new window ↩︎