--- title: "06-概论" created: 2025-11-25 tags: - 项目 aliases: - 概论 --- # 概论 shell是我们通过命令行与操作系统沟通的语言。 shell脚本可以直接在命令行中执行,也可以将一套逻辑组织成一个文件,方便复用。 AC Terminal中的命令行可以看成是一个“shell脚本在逐行执行”。 Linux中常见的shell脚本有很多种,常见的有: - Bourne Shell(/usr/bin/sh或/bin/sh) - Bourne Again Shell(/bin/bash) - C Shell(/usr/bin/csh) - K Shell(/usr/bin/ksh) - zsh - … Linux系统中一般默认使用bash,所以接下来讲解bash中的语法。 文件开头需要写#! /bin/bash,指明bash为脚本解释器。 > [!note] 原理说明:shell 与内核的关系 > 操作系统的**内核(kernel)**负责真正的工作——管理内存、进程、硬件;用户并不能直接操作内核,而是通过 shell 把输入的命令翻译成系统调用交给内核执行,再把结果返回到终端。“shell(壳)”这个名字正是相对于“内核”而言:包在内核外面的一层人机交互界面。 > > `#! /bin/bash` 这一行叫 **shebang**(又称 hashbang):`#` 在脚本里本是注释符,但内核在执行脚本时会读取首行 `#!` 之后的内容,用它指定的解释器来运行整个脚本。所以 shebang 必须在第一行、顶格写,写错了脚本就会用错误的解释器(甚至无法)执行。 ## 学习技巧 不要死记硬背,遇到含糊不清的地方,可以在AC Terminal里实际运行一遍。 ## 脚本示例 新建一个test.sh文件,内容如下: ```bash #! /bin/bash echo "Hello World!" ``` > [!warning] 注意事项 > - 脚本文件建议用 `.sh` 后缀(约定俗成,不加也能运行)。 > - 在 Windows 下编辑过的脚本传到 Linux 可能因 **CRLF 换行符** 报错(`/bin/bash^M: bad interpreter`),可用 `dos2unix test.sh` 转换后再执行。 > - `echo "Hello World!"` 中的引号必须是**英文半角引号**,中文全角引号(“”)会被 shell 当成普通字符原样输出。 ## 运行方式 作为可执行文件 ```bash chmod +x test.sh # 使脚本具有可执行权限 ./test.sh # 当前路径下执行 ``` 用解释器执行 ```bash bash test.sh ``` 解释器执行不需要有可执行权限: ```bash bash test.sh ``` 直接执行的话,需要有可执行权限: ```bash chmod +x test.sh test.sh ``` --- **项目分区导航**:[[05-shell语法|shell语法]] ⬅️ | 06-概论 | ➡️ [[07-注释|注释]]