

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 使用 `os-release` 标准
<a name="ident-os-release"></a>

 Amazon Linux 遵循用于识别 Linux 发行版的 [`os-release` 标准](https://www.freedesktop.org/software/systemd/man/latest/os-release.html)。该文件提供关于操作系统标识和版本信息的机器可读信息。

**注意**  
 该标准规定首先尝试解析 `/etc/os-release`，其次是 `/usr/lib/os-release`。应注意遵循有关文件名和路径的标准。

**Topics**
+ [关键识别差异](#ident-key-differences)
+ [字段类型：机器可读与人类可读](#ident-os-release-field-types)
+ [`/etc/os-release` 示例](#ident-os-release-examples)
+ [与其他发行版的比较](#ident-other-distributions-comparison)

## 关键识别差异
<a name="ident-key-differences"></a>

 `os-release` 位于 `/etc/os-release`，如果该位置不存在，则位于 `/usr/lib/os-release`。完整信息请查阅 [`os-release` 标准](https://www.freedesktop.org/software/systemd/man/latest/os-release.html)。

 确定实例是否运行 Amazon Linux 最可靠的方法是检查 `os-release` 中的 `ID` 字段。

 区分不同版本最可靠的方法是检查 `os-release` 中的 `VERSION_ID` 字段：
+ Amazon Linux AMI：`VERSION_ID` 包含基于日期的版本（例如 `2018.03`）
+ AL2: `VERSION_ID="2"`
+ AL2023: `VERSION_ID="2023"`

**注意**  
 请记住，`VERSION_ID` 是一个供编程使用的机器可读字段，而 `PRETTY_NAME` 是为向用户显示而设计的。有关字段类型的更多信息，请参阅 [字段类型：机器可读与人类可读](#ident-os-release-field-types)。

## 字段类型：机器可读与人类可读
<a name="ident-os-release-field-types"></a>

 `/etc/os-release` 文件（或者如果 `/etc/os-release` 不存在，则为 `/usr/lib/os-release` 文件）包含两种类型的字段：供编程使用的机器可读字段，以及供向用户呈现信息用的人类可读字段。

### 机器可读字段
<a name="ident-machine-readable-fields"></a>

 这些字段使用标准化格式，旨在供脚本、程序包管理器和其他自动化工具处理。它们仅包含小写字母、数字和有限的标点符号（句点、下划线和连字符）。
+ `ID`：操作系统标识符。Amazon Linux 在所有版本中使用 `amzn`，以此区别于其他发行版，如 Debian (`debian`)、Ubuntu (`ubuntu`) 或 Fedora (`fedora`)
+ `VERSION_ID`：供编程使用的操作系统版本（例如 `2023`）
+ `ID_LIKE`：相关发行版的空间分隔列表（例如 `fedora`）
+ `VERSION_CODENAME`：供脚本使用的发布代号（例如 `karoo`）
+ `VARIANT_ID`：用于编程决策的变体标识符
+ `BUILD_ID`：系统映像的构建标识符
+ `IMAGE_ID`：容器化环境的映像标识符
+ `PLATFORM_ID`：平台标识符（例如 `platform:al2023`）

### 人类可读字段
<a name="ident-human-readable-fields"></a>

 这些字段旨在向用户显示，可能包含空格、混合大小写和描述性文本。在用户界面中呈现操作系统信息时应使用它们。
+ `NAME`：用于显示的操作系统名称（例如 `Amazon Linux`）
+ `PRETTY_NAME`：用于显示的包含版本的完整操作系统名称（例如 `Amazon Linux 2023.8.20250721`）
+ `VERSION`：适合向用户呈现的版本信息
+ `VARIANT`：用于显示的变体或版本名称（例如 `Server Edition`）

### 其他信息字段
<a name="ident-other-fields"></a>

 这些字段提供有关操作系统的额外元数据：
+ `HOME_URL`：项目主页 URL
+ `DOCUMENTATION_URL`：文档 URL
+ `SUPPORT_URL`：支持信息 URL
+ `BUG_REPORT_URL`：错误报告 URL
+ `VENDOR_NAME`：供应商名称
+ `VENDOR_URL`：供应商 URL
+ `SUPPORT_END`— YYYY-MM-DD 格式中的 End-of-support日期
+ `CPE_NAME`：通用平台枚举标识符
+ `ANSI_COLOR`：用于终端显示的 ANSI 颜色代码

 当编写需要以编程方式识别 Amazon Linux 的脚本或应用程序时，请使用机器可读字段，如 `ID` 和 `VERSION_ID`。当向用户显示操作系统信息时，请使用人类可读字段，如 `PRETTY_NAME`。

## `/etc/os-release` 示例
<a name="ident-os-release-examples"></a>

 `/etc/os-release` 文件内容在 Amazon Linux 各版本间有所不同：

------
#### [ AL2023 ]

```
[ec2-user ~]$ cat /etc/os-release
```

```
NAME="Amazon Linux"
VERSION="2023"
ID="amzn"
ID_LIKE="fedora"
VERSION_ID="2023"
PLATFORM_ID="platform:al2023"
PRETTY_NAME="Amazon Linux 2023.8.20250721"
ANSI_COLOR="0;33"
CPE_NAME="cpe:2.3:o:amazon:amazon_linux:2023"
HOME_URL="https://aws.amazon.com/linux/amazon-linux-2023/"
DOCUMENTATION_URL="https://docs.aws.amazon.com/linux/"
SUPPORT_URL="https://aws.amazon.com/premiumsupport/"
BUG_REPORT_URL="https://github.com/amazonlinux/amazon-linux-2023"
VENDOR_NAME="AWS"
VENDOR_URL="https://aws.amazon.com/"
SUPPORT_END="2029-06-30"
```

------
#### [ AL2 ]

```
[ec2-user ~]$ cat /etc/os-release
```

```
NAME="Amazon Linux"
VERSION="2"
ID="amzn"
ID_LIKE="centos rhel fedora"
VERSION_ID="2"
PRETTY_NAME="Amazon Linux 2"
ANSI_COLOR="0;33"
CPE_NAME="cpe:2.3:o:amazon:amazon_linux:2"
HOME_URL="https://amazonlinux.com/"
SUPPORT_END="2026-06-30"
```

------
#### [ Amazon Linux AMI ]

```
[ec2-user ~]$ cat /etc/os-release
```

```
NAME="Amazon Linux AMI"
VERSION="2018.03"
ID="amzn"
ID_LIKE="rhel fedora"
VERSION_ID="2018.03"
PRETTY_NAME="Amazon Linux AMI 2018.03"
ANSI_COLOR="0;33"
CPE_NAME="cpe:/o:amazon:linux:2018.03:ga"
HOME_URL="http://aws.amazon.com/amazon-linux-ami/"
```

------

## 与其他发行版的比较
<a name="ident-other-distributions-comparison"></a>

 要了解 Amazon Linux 在更广泛的 Linux 生态系统中的位置，可将其 `/etc/os-release` 格式与其他主要发行版进行比较：

------
#### [ Fedora ]

```
[ec2-user ~]$ cat /etc/os-release
```

```
NAME="Fedora Linux"
VERSION="42 (Container Image)"
RELEASE_TYPE=stable
ID=fedora
VERSION_ID=42
VERSION_CODENAME=""
PLATFORM_ID="platform:f42"
PRETTY_NAME="Fedora Linux 42 (Container Image)"
ANSI_COLOR="0;38;2;60;110;180"
LOGO=fedora-logo-icon
CPE_NAME="cpe:/o:fedoraproject:fedora:42"
DEFAULT_HOSTNAME="fedora"
HOME_URL="https://fedoraproject.org/"
DOCUMENTATION_URL="https://docs.fedoraproject.org/en-US/fedora/f42/system-administrators-guide/"
SUPPORT_URL="https://ask.fedoraproject.org/"
BUG_REPORT_URL="https://bugzilla.redhat.com/"
REDHAT_BUGZILLA_PRODUCT="Fedora"
REDHAT_BUGZILLA_PRODUCT_VERSION=42
REDHAT_SUPPORT_PRODUCT="Fedora"
REDHAT_SUPPORT_PRODUCT_VERSION=42
SUPPORT_END=2026-05-13
VARIANT="Container Image"
VARIANT_ID=container
```

------
#### [ Debian ]

```
[ec2-user ~]$ cat /etc/os-release
```

```
PRETTY_NAME="Debian GNU/Linux 12 (bookworm)"
NAME="Debian GNU/Linux"
VERSION_ID="12"
VERSION="12 (bookworm)"
VERSION_CODENAME=bookworm
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
```

------
#### [ Ubuntu ]

```
[ec2-user ~]$ cat /etc/os-release
```

```
PRETTY_NAME="Ubuntu 24.04.2 LTS"
NAME="Ubuntu"
VERSION_ID="24.04"
VERSION="24.04.2 LTS (Noble Numbat)"
VERSION_CODENAME=noble
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=noble
LOGO=ubuntu-logo
```

------

 请注意机器可读字段如何提供跨发行版的一致标识：
+ `ID`：唯一标识操作系统：Amazon Linux 为 `amzn`，Fedora 为 `fedora`，Debian 为 `debian`，Ubuntu 为 `ubuntu`
+ `ID_LIKE`— 显示发行关系：亚马逊 Linux 使用 `fedora` (AL2023) 或 `centos rhel fedora` (AL2)，而 Ubuntu 则显示了其 Debi `debian` an 传统
+ `VERSION_ID`— 提供机器可解析的版本信息：`2023` AL2023、Fedora、Debian、`42` Ubuntu `12` `24.04`

 相比之下，人类可读字段专为向用户显示而设计：
+ `NAME`：用户友好的操作系统名称：`Amazon Linux`、`Fedora Linux`、`Debian GNU/Linux`、`Ubuntu`
+ `PRETTY_NAME`：包含版本的完整显示名称：`Amazon Linux 2023.8.20250721`、`Fedora Linux 42 (Container Image)`、`Debian GNU/Linux 12 (bookworm)`、`Ubuntu 24.04.2 LTS`
+ `VERSION`：具有附加上下文（如代号或发布类型）的人类可读版本

 编写跨平台脚本时，应始终使用机器可读字段（`ID`、`VERSION_ID`、`ID_LIKE`）进行逻辑判断和决策，并仅使用人类可读字段（`PRETTY_NAME`、`NAME`）向用户显示信息。