Chcę utworzyć plik makefile, który będzie kompilował moje obiekty i nazywał je zgodnie z dystrybucją systemu Linux (np. Suse, RedHat lub Ubuntu). Jak mogę wykryć, czy system operacyjny to Ubuntu, czy nie?
Chcę utworzyć plik makefile, który będzie kompilował moje obiekty i nazywał je zgodnie z dystrybucją systemu Linux (np. Suse, RedHat lub Ubuntu). Jak mogę wykryć, czy system operacyjny to Ubuntu, czy nie?
Odpowiedzi:
Używamy cat /etc/lsb-release
do identyfikacji wersji 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"
W przypadku innych wydań może być
ls /etc/*release
Gentoo, RedHat, Arch i SuSE mają plik wydania: http://linuxmafia.com/faq/Admin/release-files.html To jest kompletny skrypt w linku;)
Przykładowy kod systemu operacyjnego, architektury i wersji dla systemów typu Ubuntu:
OS=$(shell lsb_release -si)
ARCH=$(shell uname -m | sed 's/x86_//;s/i[3-6]86/32/')
VER=$(shell lsb_release -sr)