如何在 Bash 脚本中获取当前 Debian/Ubuntu 版本名称

Eke*_*voo 3 ubuntu debian apt

如何在 Bash 脚本中获取当前 Debian 或 Ubuntu 版本的简单小写名称,例如stretch、jessie、xenial、artful?

Eke*_*voo 7

它在 中可用/etc/os-release,但在 Ubuntu 和 Debian 之间不一致。文档对于如何使用它并不是很具体。

. /etc/os-release
NAME=$VERSION_CODENAME
if [ -z "$NAME" ]; then
    NAME=$(echo $VERSION | sed -rn 's|.+\((.+)\).+|\1|p')
fi
Run Code Online (Sandbox Code Playgroud)

它也可以在命令中使用lsb_release,安装后不需要解析:

NAME=$(lsb_release --codename --short)
Run Code Online (Sandbox Code Playgroud)

最后,可以通过一些繁重的解析直接从源文件中获取它。

NAME=$(sed -rn 's|^deb\s+\S+\s+(\w+)\s+main.*$|\1|p' /etc/apt/sources.list | head -n 1)
Run Code Online (Sandbox Code Playgroud)

  • 如果您要使用 lsb_release,请使用类似参数的命令来为您提供代码名称,而不是对输出进行 grep 和切片。`NAME=$(lsb_release --codename --short)`。 (3认同)