Ask Ubuntu is a question and answer site for Ubuntu users and developers. It's 100% free.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I want to create a makefile that will compile my objects and name them according to the Linux distro (e.g. Suse, RedHat, or Ubuntu). How can I detect if the OS is Ubuntu or not?

share|improve this question
got it working? (since you deleted your comment :D) – Rinzwind Apr 8 '13 at 10:03
yes, I changed the OS var to be "shell lsb_release -si" and now it works well :). Thanks you for your answer! – RRR Apr 8 '13 at 11:04
+1 for the funny title. (hint: Makefile and Make file mean totally different things.) – Mahesh Apr 8 '13 at 14:11
up vote 18 down vote accepted

We use cat /etc/lsb-release for identifying the Ubuntu release:

sh-3.2$  cat /etc/lsb-release

For other releases it might be

ls /etc/*release

Gentoo, RedHat, Arch & SuSE all have a release file: These is a complete script in the link ;)

Example code for operation system, architecture and version for Ubuntu type systems:

OS=$(shell lsb_release -si)
ARCH=$(shell uname -m | sed 's/x86_//;s/i[3-6]86/32/')
VER=$(shell lsb_release -sr)
share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.