[ale] Universal way to determine distro?

Jeff Lightner jlightner at water.com
Fri Jul 21 09:15:07 EDT 2006


I agree it's fairly neat.  I hadn't heard of the lsb_release command
before.

The script worked on my old RH 7.3 system as well as my Fedora Core 4
and Fedora Core 5.

By the way - the reason it used the else on FC 5 is because FC 5 has
/etc/lsb-release.d directory rather than just the /etc/lsb-release file.
He referenced this directory later in what he wrote but didn't test for
it at beginning. 

The following takes the snippet of code he so excellently created and
makes it into a stand alone script.  It also adds the test for the
directory mentioned above so it doesn't fall to the else on FC 5:

#!/bin/bash
#
# Script to show what Linux Distro the current system is
#
if [ -f /etc/lsb-release -o -d /etc/lsb-release.d ]; then
     DISTRO=`lsb_release -i | cut -d: -f2 | sed s/'^\t'//`
     DISTRO_REVISION=`lsb_release -r | cut -d: -f2 | sed s/'^\t//'`
else
     DISTRO=`ls -d /etc/[A-Za-z]*[_-][rv]e[lr]* | grep -v
"lsb-release.d" | \
             xargs cat | grep -v "=" | head -n 1 | cut -d\( -f1 | \
             sed s/"Base System version "// | sed s/" release"//`
fi
echo Linux Distro is $DISTRO $DISTRO_REVISION

-----Original Message-----
From: ale-bounces at ale.org [mailto:ale-bounces at ale.org] On Behalf Of
To: ale at ale.org
Cliff Free
Sent: Thursday, July 20, 2006 9:12 PM
To: Atlanta Linux Enthusiasts
Subject: Re: [ale] Universal way to determine distro?

A most excellent bit of shell scripting... surprisingly, Fedora Core 5
has to fall through to the nasty else for non-LSB compliant
distros.... but it does still work ;-)

On 7/20/06, lists at stromberg.org <lists at stromberg.org> wrote:
> > Good morning,
> >
> >    I guess this shows my lack of knowledge but is there a
> > universal way to determine what distro a particular machine
> > is running? I'd like to do this from bash or python, but I
> > can't think of nor google anything useful. Any ideas?
>
> Here is one place where the LSB really made a difference. Check out
the
> lsb_release utility. This is from my ~/.zprofile that displays the
distro
> I've logged into. The really nasty "else" case is for truly ancient
Linux
> versions that have no LSB compliance:
>
>
> if [ -f /etc/lsb-release ]; then
>     DISTRO=`lsb_release -i | cut -d: -f2 | sed s/'^\t'//`
>     DISTRO_REVISION=`lsb_release -r | cut -d: -f2 | sed s/'^\t//'`
> else
>     DISTRO=`ls -d /etc/[A-Za-z]*[_-][rv]e[lr]* | grep -v
"lsb-release.d" | \
>             xargs cat | grep -v "=" | head -n 1 | cut -d\( -f1 | \
>             sed s/"Base System version "// | sed s/" release"//`
> fi
>
>
>
> _______________________________________________
> Ale mailing list
> Ale at ale.org
> http://www.ale.org/mailman/listinfo/ale
>


-- 
"the best-laid schemes o' mice an' men gang aft agley" -- Robert Burns
_______________________________________________
Ale mailing list
Ale at ale.org
http://www.ale.org/mailman/listinfo/ale



More information about the Ale mailing list