### Korn Shell 93 (ksh):命令与编程语言
Korn Shell 93(简称ksh)是一种标准的、受限制的命令和编程语言,它执行从终端或文件读取的命令。Korn Shell是Unix系统中最广泛使用的shell之一,由David Korn在贝尔实验室开发,作为Bourne shell的增强版。Korn Shell结合了C shell的某些特性,同时保持了Bourne shell的兼容性。
#### 合成词:ksh、rksh、pfksh
- **ksh**:全称Korn Shell,是一种功能强大的命令解释器和脚本语言。
- **rksh**:ksh的受限版本,用于设置登录名和执行环境,其能力比标准shell更受控制。
- **pfksh**:ksh的配置文件shell版本,用于根据用户配置文件中指定的属性执行命令。
#### 命令语法概览
Korn Shell提供了一种简洁且功能丰富的语法来执行各种命令。以下是命令的基本结构:
```bash
ksh [±abcefhikmnoprstuvxBCDP] [-R file] [±o option] [-] [arg]
```
其中`[±abcefhikmnoprstuvxBCDP]`代表一系列可选的开关参数,用于调整shell的行为;`[-R file]`允许指定一个初始化脚本文件;`[±o option]`用于设置或取消特定的选项;`[-]`表示忽略当前工作目录中的所有自动加载脚本;`[arg]`则可以接受任何数量的命令行参数。
#### 描述
Korn Shell是一种命令和编程语言,能够执行从终端或文件读取的命令。rksh是Korn Shell的受限版本,用于创建受控执行环境。pfksh是基于Korn Shell的配置文件shell版本,用于执行带有用户配置文件属性的命令。
#### 定义
- **元字符**:包括`;`, `&`, `(`, `)`, `|`, `<`, `>`, `newline`, `space`, `tab`等特殊字符。
- **空白**:指制表符或空格。
- **标识符**:由字母、数字或下划线组成,必须以字母或下划线开头,用于变量命名。
- **变量名称**(vname):由一个或多个标识符组成,标识符之间用`.`分隔,前面可选有`..`,用于函数和变量命名。
- **单词**:由当前区域设置定义的字符集中的字符序列构成,排除非引号元字符。
- **命令**:遵循shell语言语法的字符序列。shell读取每个命令,并直接或通过调用独立的工具执行所需的操作。
#### 命令类型
- **简单命令**:是一系列变量赋值或一系列空白分隔的单词。第一个单词指定要执行的命令名称,其余单词传递给该命令。
#### 内置命令
Korn Shell包含一系列内置命令,这些命令由shell自身执行,无需创建单独的进程。内置命令分为两类:可能在shell环境中引起副作用的内置命令和在执行路径搜索前找到的内置命令。为了历史原因,一些内置命令与其他内置命令的行为不同,被称为特殊内置命令。
#### 变量赋值
Korn Shell支持多种类型的变量赋值,包括环境变量、局部变量和数组变量。变量赋值可以在命令之前进行,以便为随后的命令提供上下文环境。
#### 执行环境
执行环境由shell的状态和配置决定,包括当前工作目录、环境变量、已定义的函数、shell选项等。执行环境对于确保命令在正确的上下文中运行至关重要。
Korn Shell通过其丰富的功能集和灵活的语法,成为Unix系统上开发脚本和执行命令的强大工具。无论是日常的系统管理任务还是复杂的自动化脚本编写,Korn Shell都能提供所需的功能和性能。