首页/系统/信创系统运维速查//etc/os-release 系统识别与脚本适配
系统与安装65 条

/etc/os-release 系统识别与脚本适配

各信创发行版都在 /etc/os-release 暴露标准字段(ID、VERSION_ID、PRETTY_NAME),跨发行版脚本应基于它做分支判断,而不是解析 lsb_release 或猜发行版。

信创系统运维速查系统更新于 2026-10-13

os-release 是什么

/etc/os-release 是按 freedesktop.org 规范提供的系统标识文件,用一组 KEY=值 的字段描述当前发行版:名字、版本号、代号、发行版 ID、继承的发行版家族等。它最大的价值是「跨发行版一致」——麒麟、统信 UOS、openEuler 都提供同一套字段,脚本据此做分支判断最稳。文件通常在 /etc/os-release,实际内容多来自 /usr/lib/os-release,前者是软链或引用,读的时候按 /etc 下这个路径即可。

基本信息

文件位置/etc/os-release(常软链自 /usr/lib/os-release)
格式KEY=值 的 shell 风格键值对,值为带引号字符串
关键字段ID、VERSION_ID、NAME、VERSION、PRETTY_NAME、ID_LIKE
规范来源freedesktop.org os-release 规范
适用平台Kylin V10 / UOS / openEuler / 主流 Linux 发行版
权限所有用户可读

典型使用场景

  • 跨发行版脚本分支:按 ID 决定装包命令、服务名与配置文件路径
  • 交付登记:把 NAME、VERSION_ID、架构一次性记录到交付文档
  • 判断包体系:结合 ID 与机器上 rpm、apt 的存在情况决定用哪套包管理
  • 兼容性检查:安装前核对发行版与版本是否在软件支持矩阵内
  • 批量巡检:在所有机器上采集同名字段做横向对比,找出不一致的版本
  • 排障时确认环境:确认现场系统与文档假设是否一致,避免按错文档操作

读取与判断

读取与判断
cat /etc/os-release                        # 直接看全部字段
. /etc/os-release; echo "$ID $VERSION_ID"  # 在当前 shell 导入后取值
. /etc/os-release; echo "$PRETTY_NAME"     # 人工识别用完整名称
. /etc/os-release; echo "$ID_LIKE"         # 判断继承的发行版家族
case "$ID" in                              # 脚本分支的标准写法
  kylin) echo 麒麟 ;;
  uos)   echo 统信 ;;
  openEuler) echo 欧拉 ;;
  *) echo 其它发行版 ;;
esac
uname -m                                   # 架构要一起采集

关键字段读法

字段含义使用建议
ID发行版标识,小写无空格做判断条件的首选字段
VERSION_ID主版本号,如 20、20.03判断兼容性与软件源
VERSION含代号的完整版本描述报障与厂商沟通时使用
NAME发行版名称含产品线信息,可辅助区分服务器与桌面
PRETTY_NAME展示用的完整名称仅用于展示,不建议做判断条件
ID_LIKE继承的发行版家族用来推断包体系与配置习惯

一行摘要写法

一行摘要写法
. /etc/os-release; echo "$NAME $VERSION_ID $(uname -m)"   # 交付登记最常用的一行
. /etc/os-release; echo "$ID-$VERSION_ID"                  # 生成脚本用的短标识
ID 字段区分大小写,判断条件必须按实际输出写,不能凭记忆写变体;同一厂商的不同产品线 ID 可能相同,例如服务器版与桌面版都用同一个 ID,此时要结合 NAME、VERSION 与机器上的包管理工具一起判断。
不要依赖 lsb_release 或 /etc/redhat-release 这类发行版专有文件:最小化安装常不预装 lsb-release 包,专有文件名也只在部分发行版存在,跨发行版脚本用 os-release 字段最省事。

易错点

  • 把 ID 当成固定字符串硬编码却不看大小写差异,条件分支永远匹配不上,脚本静默走到兜底逻辑
  • 解析 PRETTY_NAME 做判断:展示名称会随版本调整,用它做条件非常脆弱,应改用 ID 与 VERSION_ID
  • 读文件时用 grep 硬切字符串,遇到引号或空格就出错,稳妥做法是导入字段后直接取值
  • 只看名称不看版本号:名称相同的两个补丁级别,软件源与内核差异可能很大,配源前必须核对版本

数据来源与参考

  • freedesktop.org os-release 规范
  • 各发行版官方手册
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌