Jackbox
Active Member
- Jan 2, 2016
- 197
- 96
- 74
If you know a better way please post a reply.
There are 3 main ways to do this:
The following seems to work on: Red Hat, Debian, Gentoo, Ubuntu, Mint, boot2docker
The simplest way seems to be:
cat /etc/*release
---
Edit:
I found a post on legroom.net that contains useful information.
There are 3 main ways to do this:
Code:
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
The following seems to work on: Red Hat, Debian, Gentoo, Ubuntu, Mint, boot2docker
Code:
lsb_release -a
The simplest way seems to be:
cat /etc/*release
---
Edit:
I found a post on legroom.net that contains useful information.
A while back I had a need to programmatically determine the which Linux distribution is running in order to have some scripts do the right thing depending on the distro. Unfortunately, there doesn't appear to be one completely foolproof method to do so. What I ended up coming up with was 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.
I include this code in my ~/.bashrc file so that it always runs when I login and sets the $DISTRO variable to the appropriate distribution name. I can then use that variable at any later time to perform actions based on the distro. If preferred, this could also easily be adapted into a function by having it return instead of export $DISTRO.
I've tested this on a pretty wide range of Linux and UNIX distributions, and it works very well for me, so I figured I'd share it. Hope you find it useful.
Code:
# Determine OS platform
UNAME=$(uname | tr "[:upper:]" "[:lower:]")
# If Linux, try to determine specific distribution
if [ "$UNAME" == "linux" ]; then
# If available, use LSB to identify distribution
if [ -f /etc/lsb-release -o -d /etc/lsb-release.d ]; then
export DISTRO=$(lsb_release -i | cut -d: -f2 | sed s/'^\t'//)
# Otherwise, use release info file
else
export DISTRO=$(ls -d /etc/[A-Za-z]*[_-][rv]e[lr]* | grep -v "lsb" | cut -d'/' -f3 | cut -d'-' -f1 | cut -d'_' -f1)
fi
fi
# For everything else (or if above failed), just use generic identifier
[ "$DISTRO" == "" ] && export DISTRO=$UNAME
unset UNAME
Last edited: