将lsb_release中的Distro信息添加到脚本中

时间:2016-02-19 14:28:28

标签: bash

想要运行一个bash脚本,安装软件并在全新安装发行版后重新发布。我有一个脚本,适用于基于debian的发行版。想添加到将从lsb_release中获取发行版的脚本并启动正确的安装命令。 lsb_release是正确的选择吗?我假设我可以grep DISTRIB_ID并使用它来启动脚本的下一部分。我可能会从错误的方向来到这里。有什么建议?干杯。

1 个答案:

答案 0 :(得分:0)

虽然您可以使用lsb_release -d来提取当前安装的发行版的说明,但可能不会在某些非基于debian的发行版中安装lsb_release

相反,您可以在/etc中查找以-release结尾的文件,其中包含您的操作系统信息。例如,从我的Ubuntu 15.10开始,我就拥有以下内容:

alexander~$ cat /etc/*-release
DISTRIB_ID=Ubuntu 
DISTRIB_RELEASE=15.10
DISTRIB_CODENAME=wily
DISTRIB_DESCRIPTION="Ubuntu 15.10"
NAME="Ubuntu"
VERSION="15.10 (Wily Werewolf)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 15.10"
VERSION_ID="15.10"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"

注意ID,其中包含您当前的发行版,以及ID_LIKE,其中包含您的发行版所基于的发行版(在我的情况下,ubuntu,它基于debian)。从这里,你可以通过grepping提取ID和ID_LIKE的值,如下所示:

cat /etc/*-release | grep "^ID=" | grep -E -o "[a-z]\w+"      # get ID value
cat /etc/*-release | grep "^ID_LIKE=" | grep -E -o "[a-z]\w+" # get ID_LIKE value
# If the -o option is not available for grep in your system, use awk instead

在您的脚本中,您可以将变量初始化为上述语句,例如:

current_distro=`cat /etc/*-release | grep "^ID=" | grep -E -o "[a-z]\w+"`
close_distro=`cat /etc/*-release | grep "^ID_LIKE=" | grep -E -o "[a-z]\w+"`

然后,您可以通过检查脚本中的"$current_distro""$close_distro"来确定相应的安装命令。