Назад | Перейти на главную страницу

Как получить название текущей версии Debian / Ubuntu в сценарии Bash

Как получить в сценарии Bash простое имя текущего выпуска Debian или Ubuntu в нижнем регистре, например стрейч, джесси, ксениал, хитрый?

Это доступно в /etc/os-release, но это несовместимо между Ubuntu и Debian. Документация не очень конкретно о том, как его использовать.

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

Это также доступно в команде lsb_release, который при установке не требует разбора:

NAME=$(lsb_release --codename --short)

Наконец, его можно получить непосредственно из файла с исходным кодом с помощью тяжелого анализа.

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