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