什么是 Shell
Shell 既是命令行解释器,又是一门编程语言。
作为命令行解释器的 Shell
- 用途:处理来自终端模拟器的输入,解释执行之后输出结果给终端
- 终端:获取用户输入,展示运算结果的硬件设备
- 终端模拟器:是关联虚拟终端的软件
- shell 中有哪些命令:
- GNU 核心工具集
- 比如
ls mv cat等 - 可以通过type命令查看某个命令安装的路径:
type mv => /bin/mv
- 比如
- 第三方库
- node、python 等封装的模块
- 某一种具体shell内置的命令
- 比如 bash 内置命令
- GNU 核心工具集
什么是 Bash
- bash 是 shell 的一种具体实现(可以理解为“类”和“实例”的关系)
- bash 中有一些内置的命令
- 比如
. [ echo let read等
- 比如
作为编程语言的 Shell
- 具有比较常见的变量、运算符、语句(判断、分支、循环)、函数、模块化
- 和一些比较特殊的管道、重定向
(具体内容将在其它笔记中展开:变量和运算符)
什么是 Shell 脚本
- 将一系列命令通过特定的编程语法组织后就得到了一个 shell 脚本
- 可以将 shell 脚本保存为一个文件,文件通常以
.sh结尾(也可以没有,因为 linux 不是根据后缀名判断文件类型的) - 脚本第一行需要指定用什么命令解释器来执行
- 比如,
#! /bin/bash或者#! /usr/bin/env bash #!是内核识别并选择合适的解释器之后,将文本文件再交给解释器执行
- 比如,
- 可以将 shell 脚本保存为一个文件,文件通常以
如何在 Shell 中启动脚本
- 直接输入文件名来运行(需要有可执行权限)
- 比如,
./filename.sh
- 比如,
- 指定某个解释器来运行脚本
- 比如,
bash ./filename.sh
- 比如,
- 使用 source 命令运行
- 比如,
source ./filename.sh
- 比如,
- 注意!前两种启动方式能使脚本不仅在当前 shell 运行,也在子 shell 中运行,但是第三种启动方式只能使脚本在当前 shell 运行