59

How to know which Linux Distribution I'm using?

uname -a gives

Linux xxxxxx.net 2.6.9-42.0.3.EL.wh1smp #1 SMP Fri Aug 14 15:48:17 MDT 2009 i686 i686 i386 GNU/Linux

How can I know this is Ubuntu/Debian/Fedora or Redhat?

I uses /etc/init.d/serviced restart for restarting serevices, seems it is not Redhat family

[itf][~]$ cat /etc/issue
cat: /etc/issue: No such file or directory
[itf][~]$ cat /etc/issue.net
cat: /etc/issue.net: No such file or directory
[itf][~]$ lsb_release -a
-sh: lsb_release: command not found
[itf][~]$ cat /etc/*-release
cat: /etc/*-release: No such file or directory
[itf][~]$ cat /etc/*-version
cat: /etc/*-version: No such file or directory
[itf][~]$ cat /etc/*release
cat: /etc/*release: No such file or directory
[itf][~]$ cat /etc/*_release
cat: /etc/*_release: No such file or directory
[itf][~]$ cat /etc/*version
cat: /etc/*version: No such file or directory
[itf][~]$
2
  • If you want certain personal/confidential information to be removed, I think you can flag your question for moderator attention. Because we can still read it now... Mar 9, 2012 at 8:54
  • @Tom Wijsman just want not to display that text in questions page, I know that will be there in history :-) Mar 9, 2012 at 9:18

13 Answers 13

37
  • In Debian: /etc/debian_version

  • In Ubuntu: lsb_release -a or /etc/debian_version

  • In Redhat: cat /etc/redhat-release

  • In Fedora: cat /etc/fedora-release

7
  • 2
    He tried all of them, see his source code.
    – guerda
    Dec 8, 2009 at 8:07
  • 2
    +1, "lsb_release -a" worked for me on Red Hat.
    – Aaron
    Jul 13, 2012 at 14:10
  • 4
    lsb_release -a worked in Debian (squeeze), too.
    – acme
    Mar 14, 2013 at 15:23
  • 1
    lsb_release -a works in Gentoo as well Mar 12, 2014 at 12:37
  • 1
    lsb_release -a works also in Ubuntu and Mint.
    – wranvaud
    Apr 6, 2016 at 18:06
32

Keep it simple!

cat /etc/*release
15

You might try this article from Novell.

If you are the owner of the system, then you know which Linux is installed and running. This article will help you to understand how to determine which Linux distribution is installed. You can incorporate this into your application to detect Linux distro.

5
  • I already tried $ cat /etc/*release cat: /etc/*release: No such file or directory Running the mensioned script gives a result simalr to uname -a command Linux 2.6.9-42.0.3.EL.wh1smp( 2.6.9-42.0.3.EL.wh1smp i686) $ uname -a Linux qsquare.net 2.6.9-42.0.3.EL.wh1smp #1 SMP Fri Aug 14 15:48:17 MDT 2009 i686 i686 i386 GNU/Linux Dec 8, 2009 at 9:43
  • 6
    cat /etc/*release seems to work for some of the mainstream distros. I verified with Ubuntu, Mint, Red Hat, and Gentoo. Mar 15, 2012 at 19:50
  • Debian does not recognize this Aug 25, 2012 at 13:07
  • The Novell solution works, at last on my RedHat 5.3. I've integrated it in my free shell lib : github.com/Offirmo/offirmo-shell-lib
    – Offirmo
    Nov 21, 2012 at 15:51
  • @nobar: It also works with SUSE distributions: /etc/SuSE-release pastebin.com/dL5gVLQe
    – bwDraco
    Sep 21, 2013 at 22:43
5

All compliant systems will have /etc/os-release which should give you information related to distribution etc

NAME=Fedora
VERSION="17 (Beefy Miracle)"
ID=fedora
VERSION_ID=17
PRETTY_NAME="Fedora 17 (Beefy Miracle)"
ANSI_COLOR="0;34"
CPE_NAME="cpe:/o:fedoraproject:fedora:17"
HOME_URL="https://fedoraproject.org/"
BUG_REPORT_URL="https://bugzilla.redhat.com/"
3

Try one of these:

ls -ld /etc/\*release\*  /etc/\*version\*

gcc --version
1
  • 1
    Can I ask you why you are refusing to use markup for code? Please indent code by four spaces, that makes it so much easier to read and distinguish. Thank you.
    – slhck
    Mar 9, 2012 at 11:23
2

Try http://legroom.net/2010/05/05/generic-method-determine-linux-or-unix-distribution-name.

A combination of techniques that combines querying the LSB utilities, distro release info files, and kernel info from uname. It'll take the most specific distro name it can find, falling back to generic Linux if necessary. It'll also identify UNIX variants as well, such as Solaris or AIX.

2

Use the Pre login message if it has not been edited cat /etc/issue

1

Hmm, maybe its another distro - the .EL suffix seems to be used by centos, but that's a redhat dervative. I'm also wondering what's your package management system? It might help to check whose repos you use- since these are usually vendor supplied, and distro specific

1

Check out this hack, that peeks at functions defined in startup scripts.

0

Based on the kernel version I'd say it's WBEL 4. They've been known to lag a bit with their updates, so it would probably be best to migrate to CentOS at your convenience.

0

Just putting the result into a var and in lowercase

OS=`awk -F= '/DISTRIB_ID/ {print tolower($2)}' /etc/lsb-release`
0

An update here, now it is possible to use lsb_release -ds, so you can use it like linuxDistro=$(lsb_release -ds) with no extra parsing.

0

The utilities neofetch and screenfetch both display your distribution name and version -- and they include some nice ASCII art. They might not be installed by default, however.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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