Bash 将发行版信息从lsb_版本添加到脚本
希望运行bash脚本,在新安装发行版后安装软件和repos。我有一个脚本将用于基于debian的发行版。要添加到脚本中,该脚本将从lsb_发行版获取发行版并启动正确的安装命令。lsb_发行版是正确的选择吗?我假设我可以grep发行版ID并使用它开始脚本的下一部分。我可能是从错误的方向来的。有什么建议吗?干杯 虽然您可以使用Bash 将发行版信息从lsb_版本添加到脚本,bash,Bash,希望运行bash脚本,在新安装发行版后安装软件和repos。我有一个脚本将用于基于debian的发行版。要添加到脚本中,该脚本将从lsb_发行版获取发行版并启动正确的安装命令。lsb_发行版是正确的选择吗?我假设我可以grep发行版ID并使用它开始脚本的下一部分。我可能是从错误的方向来的。有什么建议吗?干杯 虽然您可以使用lsb_release-d提取当前安装的发行版的描述,但是lsb_release可能不会安装在某些非debian发行版中 相反,您可以在/etc中查找以-release结尾的文
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\u LIKE
,它包含您的发行版所基于的发行版(在我的例子中,ubuntu是基于debian的)。从中,您可以通过如下方式通过灰色化提取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\u distro”
或“$close\u distro”
来确定适当的安装命令。非常感谢。这很有帮助。身份证和身份证是更好的选择。不客气。正如他们所描述的,ID/ID_-LIKE更适合通过脚本处理或在生成的文件名中使用。