2016-02-19 32 views
0

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

回答

0

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

相反,您可以在/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)。

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+"` 

然后你就可以判断这个,你可以通过grepping如下提取ID和ID_LIKE的值通过在您的脚本中检查"$current_distro""$close_distro"来执行相应的安装命令。

+0

非常感谢。这有帮助。 ID和ID_LIKE是更好的选择。 –

+0

不客气。并且[os-release-operating system identification](https://www.freedesktop.org/software/systemd/man/os-release.html)对它们进行了描述,ID/ID_LIKE更适合通过脚本进行处理或使用在生成的文件名中。 – assefamaru

相关问题