我想创建一个 makefile 来编译我的对象并根据 Linux 发行版(例如 Suse、RedHat 或 Ubuntu)命名它们。如何检测操作系统是否是 Ubuntu?
答案1
我们用cat /etc/lsb-release
它来识别 Ubuntu 版本:
sh-3.2$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=8.04
DISTRIB_CODENAME=hardy
DISTRIB_DESCRIPTION="Ubuntu 8.04.4 LTS"
对于其他版本来说,可能是
ls /etc/*release
Gentoo、RedHat、Arch 和 SuSE 都有一个发布文件:http://linuxmafia.com/faq/Admin/release-files.html这是链接中的完整脚本;)
Ubuntu 类型系统的操作系统、架构和版本的示例代码:
OS=$(shell lsb_release -si)
ARCH=$(shell uname -m | sed 's/x86_//;s/i[3-6]86/32/')
VER=$(shell lsb_release -sr)