When using an unfamiliar Linux/BSD/Unix computer (e.g. by SSH) from the command line, how can you tell what distribution (and what version of that distribution) you're using?

Some options I've tried:

  • lsb_release --all: doesn't exist on OpenSuSE 11.3; works on Debian squeeze and Ubuntu 10.10.
  • uname --all: doesn't give distro information on SuSE and Debian; works in Ubuntu.
  • cat /etc/apt/sources.list in you can see which distribution's servers the machine connects to for updates. Obviously, only works for Debian-based distributions. Won't work if the computer has been configured to use a custom repository server.

Unfortunately none of these seem to work across many distributions. Is there a simple command to check?

link|improve this question
feedback

3 Answers

up vote 3 down vote accepted

If Python 2.3 or later is installed, this will work with many distributions:

python -c "import platform; print platform.dist()"
link|improve this answer
feedback

cat /proc/version

might do the trick.

link|improve this answer
1  
There are many unixes that don't support the /proc pseudo-filesystem. – dmckee Oct 19 '11 at 16:08
feedback

There is no one magic command that works across all distributions - you will need to try a series of things to work out an answer.

Things to try include some you have done, like lsb_release, and others that you haven't like looking at /etc/redhat-release, /etc/fedora-release, etc.

link|improve this answer
Also /etc/SuSE-release. – Mechanical snail Oct 19 '11 at 7:46
1  
Check /etc/*-release -- but there are systems with no such file(s). – Keith Thompson Oct 19 '11 at 9:01
feedback

Your Answer

 
or
required, but never shown

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