https://www.in-ulm.de/~mascheck/various/shells/
https://www.in-ulm.de/~mascheck/various/whatshell/whatshell.sh.html
https://dxr.mozilla.org/comm-central/source/build/autoconf/config.guess
wget -O config.guess 'http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD'

Nelson H. F. Beebe" <beebe@math.utah.edu

Here is a summary of the test systems at Utah, most of which have
multiple O/S releases in physical and/or virtual machines:

        * Bitrig        (x86-64)                [fork of OpenBSD in late 2014]
        * DesktopBSD    (x86-64)                [fork of FreeBSD 7.2]
        * DilOS         (x86-64)                [fork of illumos, OpenIndiana, and OpenSolaris]
        * DragonFlyBSD  (x86-64)                [fork of FreeBSD 4.8 in 2003]
        * Dyson         (x86-64)                [fork of illumos and OpenSolaris with Debian GNU toolset]
        * FreeBSD       (x86 and x86-64)        [fork of BSD and 386BSD in 1993]
        * FreeNAS       (x86-64)                [fork of FreeBSD 9, 10, 11]
        * GhostBSD      (x86-64)                [fork of FreeBSD 10.3]
        * GNU/Hurd      (x86)
        * GNU/Linux     (ARM, MIPS, PowerPC-8,
                        SPARC, x86, x86-64)     [many different distros: see list below]
        * HardenedBSD   (x86-64)                [fork of FreeBSD 11.0]
        * Hipster       (x86-64)                [rolling update of OpenIndiana]
        * IRIX          (MIPS R10000)
        * kFreeBSD      (x86-64)                [fork of FreeBSD 7]
        * LibertyBSD    (x86-64)                [fork of OpenBSD 5.9]
        * Mac OS X      (PowerPC, x86, x86-64)
        * MidnightBSD   (x86-64)                [fork of FreeBSD 6.1]
        * Minix         (x86)
        * MirBSD        (x86-64)                [fork of OpenBSD 3.1 in 2002]
        * NetBSD        (x86 and x86-64)        [fork of 4.4BSD in 1993]
        * OmniOS        (x86-64)                [fork of illumos, OpenIndiana, and OpenSolaris]
        * OpenBSD       (x86 and x86-64)        [fork of NetBSD 1.0 in 1995]
        * OpenIndiana   (x86-64)                [fork of OpenSolaris 11 illumos]
        * PacBSD        (x86-64)                [fork of FreeBSD 11]
        * PC-BSD        (x86-64)                [fork of FreeBSD 10.3]
        * Solaris       (SPARC, x86, x86-64)
        * Tribblix      (x86-64)                [fork of illumos, OpenIndiana, and OpenSolaris]
        * TrueOS        (x86-64)                [rolling-update successor to PC-BSD]
        * XStreamOS     (x86-64)                [fork of illumos, OpenIndiana, and OpenSolaris]

The GNU/Linux systems include one or more versions of these
30+ distributions:

        * Alpine                                [uses muscl instead of glibc, and new memory model]
        * ArchLinux
        * Bodhi
        * CentOS
        * ClearOS
        * Debian
        * Devuan
        * Dragora
        * ElementaryOS
        * Fedora
        * Gentoo
        * GoboLinux
        * Kali
        * Knoppix
        * Kubuntu
        * Lubuntu                               [fork of Ubuntu with systemd removed]
        * LXLE          (x86-64)                [fork of Ubuntu 16.04.1]
        * Mageia
        * Manjaro
        * Mint
        * OpenMandriva
        * openSUSE
        * Oracle
        * Parrot        (x86-64)                [fork of Kali 1]
        * PCLinuxOS
        * Red Hat
        * Salix
        * Scientific Linux
        * Slackware
        * Solus
        * Ubuntu
        * Void

We have also played with Crux, FreeNAS, GUIX (pronounced `geeks'),
illumian (illumos), PuppyLinux, Intel's ClearLinux, TinyCore, and a
few others, but they are sufficiently peculiar that they are not
included in our routine builds.


SOLARIS

The distro.sh script fails on Solaris because it uses ksh / bash / zsh
extensions: $(cmd) vs `cmd`.  Solaris up to about version 11.2 or so
(most of our systems from Sun run Solaris 10) uses a strict Bourne
shell for /bin/sh.  I strongly recommend the conversion of distro.sh
to conform to that shell level.

Here is some sample output:

%  uname -a ; uname -m; uname -r; uname -s; uname
SunOS sunburst.math.utah.edu 5.10 Generic_150400-56 sun4u sparc SUNW,Sun-Fire-V440 Solaris
sun4u
5.10
SunOS
SunOS

%  uname -a ; uname -m; uname -r; uname -s; uname
SunOS olympus.math.utah.edu 5.10 Generic_150401-53 i86pc i386 i86pc Solaris
i86pc
5.10
SunOS
SunOS

We run both SPARC and Intel x86/x86-64 hardware with Solaris.  Originally,
the O/S was called SunOS, but about 1991, it was rebranded Solaris: see
the Version History section of

        https://en.wikipedia.org/wiki/Solaris_(operating_system)

uname does not report Solaris, but this file does:

%  cat /etc/release
                    Oracle Solaris 10 9/10 s10x_u9wos_14a X86
     Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
                            Assembled 11 August 2010

% cat /etc/release
                             Oracle Solaris 11.3 X86
  Copyright (c) 1983, 2017, Oracle and/or its affiliates.  All rights reserved.
                            Assembled 05 October 2017

---------------




As an earlier message reported, we have several derivatives of the
Solaris and OpenSolaris O/Ses: DilOS, Dyson, Hipster, Illumian,
Omnios, OpenIndiana, Tribblix, and XStreamOS.

Mostly, it is hard to distinguish between them, at least with
uname, which tends to report SunOS for all of them.

Do you want to have distro.sh try to tell them apart, or are you happy
with the SUNOS report that it currently produces?

The /etc/release file, when available, contains distinguishing
information:

        foreach f ( borel dilos13 dyson hipster illumian10v olympus omnios openindiana sol11 sunlit tribblixc )
            ssh -x -n $f 'echo ; echo ---------------------------------------- ; hostname; uname -a ; cat /etc/release'
        end

        ----------------------------------------
        borel.math.utah.edu
        SunOS borel.math.utah.edu 5.11 11.3 i86pc i386 i86pc Solaris
                                     Oracle Solaris 11.3 X86
          Copyright (c) 1983, 2017, Oracle and/or its affiliates.  All rights reserved.
                                    Assembled 05 October 2017

        ----------------------------------------
        dilos13.vm.math.utah.edu
        SunOS dilos13.vm.math.utah.edu 5.11 1.3.7.141 i86pc i386 i86pc
                                DilOS 1.3 (based on illumos)
                Copyright 2011 Oracle and/or its affiliates. All rights reserved.
                        Copyright (c) 2012, DilOS. All rights reserved.
                                Use is subject to license terms.

        ----------------------------------------
        dyson.vm.math.utah.edu
        SunOS dyson.vm.math.utah.edu 5.11 5.10.18.git.2a44663-0.1 i86pc i386 i86pc Solaris
        cat: /etc/release: No such file or directory

        ----------------------------------------
        hipster.vm.math.utah.edu
        SunOS hipster.vm.math.utah.edu 5.11 illumos-4831c99d5b i86pc i386 i86pc Solaris
                     OpenIndiana Hipster 2017.10 (powered by illumos)
                OpenIndiana Project, part of The Illumos Foundation (C) 2010-2017
                                Use is subject to license terms.
                                   Assembled 30 October 2017
        ssh_exchange_identification: Connection closed by remote host

        ----------------------------------------
        olympus.math.utah.edu
        SunOS olympus.math.utah.edu 5.10 Generic_150401-53 i86pc i386 i86pc Solaris
                            Oracle Solaris 10 9/10 s10x_u9wos_14a X86
             Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
                                    Assembled 11 August 2010

        ----------------------------------------
        omnios.vm.math.utah.edu
        SunOS omnios.vm.math.utah.edu 5.11 omnios-f79e06d i86pc i386 i86pc Solaris
          OmniOS v11 r151018
          Copyright 2016 OmniTI Computer Consulting, Inc. All rights reserved.
          Use is subject to license terms.

        ----------------------------------------
        openindiana.vm.math.utah.edu
        SunOS openindiana.vm.math.utah.edu 5.11 oi_151a9 i86pc i386 i86pc Solaris
                     OpenIndiana Development oi_151.1.9 X86 (powered by illumos)
                Copyright 2011 Oracle and/or its affiliates. All rights reserved.
                                Use is subject to license terms.
                                   Assembled 17 January 2014

        ----------------------------------------
        sol11.vm.math.utah.edu
        SunOS sol11.vm.math.utah.edu 5.11 11.3 i86pc i386 i86pc Solaris
                                     Oracle Solaris 11.3 X86
          Copyright (c) 1983, 2015, Oracle and/or its affiliates.  All rights reserved.
                                    Assembled 06 October 2015

        ----------------------------------------
        sunlit.math.utah.edu
        SunOS sunlit.math.utah.edu 5.10 Generic_150400-56 sun4v sparc SUNW,T5240 Solaris
                              Solaris 10 10/09 s10s_u8wos_08a SPARC
                   Copyright 2009 Sun Microsystems, Inc.  All Rights Reserved.
                                Use is subject to license terms.
                                   Assembled 16 September 2009

        ----------------------------------------
        tribblixc.vm.math.utah.edu
        SunOS tribblixc.vm.math.utah.edu 5.11 tribblix-m19 i86pc i386 i86pc Solaris
        Tribblix 0.19


Earlier today, I reported suggestions for distro.sh on the
Solaris family.  I had to omit results for XStreamOS, because the
VM in which it was running got corrupted to the point of unusability,
and I had to rebuild it from scratch.  I then had a login problem:
it booted into a GUI, but there was no keyboard input, making further
work impossible.

A few minutes ago, I solved the problem by booting a rescue kernel,
fixing /etc/ssh/ssh*config files, restarting the network and sshd,
and turning off the GUI entirely.  The machine is now back, and I
can report this:

% uname -a ; uname -m; uname -r; uname -s; uname
SunOS xstreamos.vm.math.utah.edu 5.11 XStreamOS i86pc i386 i86pc
i86pc
5.11
SunOS
SunOS

% ls /etc/*rele*
/etc/release

% cat /etc/release
                              Sonicle XStreamOS
                        Powered by illumos build 154 X86
                        Use is subject to license terms.
                           Assembled April 2017



TRIBBLIX

Tribblix is one of the more unusual OpenSolaris descendants.  distro.sh
reports SUNOS, but it can be better identified:

% uname -a ; uname -m; uname -r; uname -s; uname
SunOS tribblixc.vm.math.utah.edu 5.11 tribblix-m19 i86pc i386 i86pc Solaris
i86pc
5.11
SunOS
SunOS

cat /etc/release
Tribblix 0.19

% distro.sh
SUNOS

% uname -a ; uname -m; uname -r; uname -s; uname
SunOS illumian10v.vm.math.utah.edu 5.11 4cece89cac3e i86pc i386 i86pc
i86pc
5.11
SunOS
SunOS

% ls /etc/*rele*
/etc/lsb-release  /etc/release

% cat /etc/release
                 illumian GNU/OpenSolaris (illumos based platform)
           Copyright 2011-2012 Nexenta Systems, Inc.  All Rights Reserved.
          Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
                        Use is subject to license terms.

% cat /etc/lsb-release
DISTRIB_ID=Debian
DISTRIB_RELEASE=
DISTRIB_CODENAME=illumian
DISTRIB_DESCRIPTION="illumian"




ALPINE

$ uname -a ; uname -m; uname -r; uname -s; uname
Linux alpine343.vm.math.utah.edu 4.4.68-0-grsec #1-Alpine SMP Fri May 19 08:50:21 GMT 2017 x86_64 GNU/Linux
x86_64
4.4.68-0-grsec
Linux
Linux

$ ls /etc/*rele*
/etc/alpine-release  /etc/os-release

$ cat /etc/alpine-release
3.4.6

$ cat /etc/os-release
NAME="Alpine Linux"
ID=alpine
VERSION_ID=3.4.6
PRETTY_NAME="Alpine Linux v3.4"
HOME_URL="http://alpinelinux.org"
BUG_REPORT_URL="http://bugs.alpinelinux.org"


BITRIG

I seemed to have missed reporting on Bitrig, a derivative of OpenBSD.
distro.sh reports for it NONGNULINUX, but could be more precise:

%  uname -a ; uname -m; uname -r; uname -s; uname
Bitrig bitrig10.vm.math.utah.edu 1.0 GENERIC#1 amd64 Intel Core Processor (Haswell) Bitrig
amd64
1.0
Bitrig
Bitrig

VOID LINUX

distro.sh reports OTHERGNULINUX for Void Linux, but it can be
better identified:

% uname -a ; uname -m; uname -r; uname -s; uname
Linux void64.vm.math.utah.edu 4.13.12_1 #1 SMP PREEMPT Wed Nov 8 11:24:22 UTC 2017 x86_64 GNU/Linux
x86_64
4.13.12_1
Linux
Linux

% cat /etc/os-release
NAME="void"
ID="void"
DISTRIB_ID="void"
PRETTY_NAME="void"

SOLUS

distro.sh identifies Solus Linux as OTHERGNULINUX, but it can be
characterized better:

% uname -a ; uname -m; uname -r; uname -s; uname
Linux solus12.vm.math.utah.edu 4.9.53-51.lts #1 SMP Thu Oct 5 13:54:16 UTC 2017 x86_64 GNU/Linux
x86_64
4.9.53-51.lts
Linux
Linux

% ls /etc/*rele*
/etc/lsb-release  /etc/os-release  /etc/solus-release

% cat /etc/solus-release
Solus 3

% cat /etc/os-release
NAME="Solus"
VERSION="3"
ID="solus"
VERSION_ID="3"
PRETTY_NAME="Solus 3"
ANSI_COLOR="1;34"
HOME_URL="https://www.solus-project.com"
SUPPORT_URL="https://www.solus-project.com/forums/"
BUG_REPORT_URL="https://dev.solus-project.com/"

% cat /etc/lsb-release
LSB_VERSION=1.4
DISTRIB_ID=Solus
DISTRIB_DESCRIPTION="Solus"
DISTRIB_RELEASE=3
DISTRIB_CODENAME=shannon


PCLINUXOS mandriva

distro.sh reports MANDRIVA for PCLinuxOS, which is related to Mandriva,
but differs in other ways.

Here is output that identifies it:

% uname -a ; uname -m; uname -r; uname -s; uname
Linux pclinuxosd.vm.math.utah.edu 4.11.8-pclos1 #1 SMP Thu Jun 29 18:38:17 CDT 2017 x86_64 GNU/Linux
x86_64
4.11.8-pclos1
Linux
Linux

% ls /etc/*rele*
/etc/lsb-release            /etc/mandriva-release   /etc/redhat-release
/etc/mandrake-release       /etc/os-release         /etc/release
/etc/mandrakelinux-release  /etc/pclinuxos-release

/etc/lsb-release.d:

 % cat /etc/pclinuxos-release
PCLinuxOS release 2017 (PCLinuxOS) for x86_64


SUSE

distro.sh identified some of the versions of openSUSE as SUSE, but
on the 42.3 and TumbleWeed (rolling release) recent variants,
instead reported OTHERGNULINUX.

Also, on 42.3, it tried to read /etc/SUSE-release, but that file
does not exist:

% distro.sh
cat: /etc/SUSE-release: No such file or directory
cat: /etc/SUSE-release: No such file or directory
SUSE

% uname -a ; uname -m; uname -r; uname -s; uname
Linux opensusetw.vm.math.utah.edu 4.13.12-1-default #1 SMP PREEMPT Wed Nov 8 11:21:09 UTC 2017 (9151c66) x86_64
GNU/Linux
x86_64
4.13.12-1-default
Linux
Linux

% uname -a ; uname -m; uname -r; uname -s; uname
Linux opensuse423.vm.math.utah.edu 4.4.92-31-default #1 SMP Sun Oct 22 06:56:24 UTC 2017 (1d80e8a) x86_64 GNU/Linux
x86_64
4.4.92-31-default
Linux
Linux

% cat /etc/os-release
NAME="openSUSE Tumbleweed"
# VERSION="20171112"
ID=opensuse
ID_LIKE="suse"
VERSION_ID="20171112"
PRETTY_NAME="openSUSE Tumbleweed"
ANSI_COLOR="0;32"
CPE_NAME="cpe:/o:opensuse:tumbleweed:20171112"
BUG_REPORT_URL="https://bugs.opensuse.org"
HOME_URL="https://www.opensuse.org/"

% cat /etc/os-release
NAME="openSUSE Leap"
VERSION="42.3"
ID=opensuse
ID_LIKE="suse"
VERSION_ID="42.3"
PRETTY_NAME="openSUSE Leap 42.3"
ANSI_COLOR="0;32"
CPE_NAME="cpe:/o:opensuse:leap:42.3"
BUG_REPORT_URL="https://bugs.opensuse.org"
HOME_URL="https://www.opensuse.org/"



BSD

MirBSD is a rather peculiar derivative of OpenBSD.  distro.sh
currently reports it as OTHERBSD, but it could do better:

  uname -a ; uname -m; uname -r; uname -s; uname
MirBSD mirbsd2.vm.math.utah.edu 10 Kv#10uB7-20160117 GENERIC#1488 i386
i386
10
MirBSD
MirBSD


MINIX

On a Minix system, the current distro.sh incorrectly reports NONGNULINUX.

However, Minix predates Linux, and is far smaller. It is easily identified:

$ uname -a ; uname -m; uname -r; uname -s; uname
Minix minix.vm.math.utah.edu 3.2.1 i686
i686
3.2.1
Minix
Minix


FreeBSD
MidnightBSD is a fork of FreeBSD, and distro.sh currently reports
it as OTHERBSD.  Here is how to identify it:

%  uname -a ; uname -m; uname -r; uname -s; uname
MidnightBSD midnightbsd08.vm.math.utah.edu 0.8 MidnightBSD 0.8 #1 r7652: Tue Aug  2 20:30:54 EDT 2016
root@m5:/usr/obj/usr/src/sys/GENERIC amd64 amd64 Intel Core Processor (Haswell) FreeBSD
amd64
0.8
MidnightBSD
MidnightBSD

It has only this year been added to GNU autoconfigure's config.guess script,
which now reports

%  config.guess
amd64-unknown-midnightbsd0.8



MANJARO

On Manjaro Linux, distro.sh reports OTHERGNULINUX, but the system
is easily recognized:

% uname -a ; uname -m; uname -r; uname -s; uname
Linux manjaro17.vm.math.utah.edu 4.9.58-1-MANJARO #1 SMP PREEMPT Sat Oct 21 16:41:16 UTC 2017 x86_64 GNU/Linux
x86_64
4.9.58-1-MANJARO
Linux
Linux

% ls /etc/*rele*
/etc/lsb-release  /etc/manjaro-release  /etc/os-release

% cat /etc/lsb-release
DISTRIB_ID=ManjaroLinux
DISTRIB_RELEASE=17.0.6
DISTRIB_CODENAME=Gellivara
DISTRIB_DESCRIPTION="Manjaro Linux"

% cat /etc/manjaro-release
Manjaro Linux

% cat /etc/os-release
NAME="Manjaro Linux"
ID=manjaro
PRETTY_NAME="Manjaro Linux"
ANSI_COLOR="1;32"
HOME_URL="https://www.manjaro.org/"
SUPPORT_URL="https://www.manjaro.org/"
BUG_REPORT_URL="https://bugs.manjaro.org/"


LibertyBSD

LibertyBSD is a fork of OpenBSD 5.9, and distro.sh reports it as OTHERBSD.
However, it is readily identifiable:

% uname -a ; uname -m; uname -r; uname -s; uname
LibertyBSD libertybsd61.vm.math.utah.edu 6.1 GENERIC.MP#0 amd64
amd64
6.1
LibertyBSD
LibertyBSD


GoboLinux
GoboLinux is a very unusual variant with a completely different
view of what the filesystem should look like.  Each program has
its own directory, with symlinks back to the usual places in the PATH
list.

% ls /
Data  Mount  Programs  System  Users  local  lost+found  u

% ls /usr
X11R6  bin  include  lib  lib64  libexec  local  man  sbin  share  uumath

Notice the use of hidden (at least to ls) directories.

% uname -a ; uname -m; uname -r; uname -s; uname
Linux gobolinux1601.vm.math.utah.edu 4.9.16-Gobo #0 SMP PREEMPT Mon Mar 20 08:53:55 BRT 2017 x86_64 GNU/Linux
x86_64
4.9.16-Gobo
Linux
Linux

% cat /etc/issue

Welcome to GoboLinux 016.01.

Kernel........: Linux 4.9.16-Gobo x86_64
Compilation...: #0 SMP PREEMPT Mon Mar 20 08:53:55 BRT 2017
Processor.....: AMD Opteron(tm) Processor 6136
Memory........: 1006480 kB
Terminal......: \l

Thus, the existence of /etc/issue and presence of "Gobo" in the output
of "uname -r" suffice to identify this distribution.


Body


Bodhi Linux is based on Ubuntu, and distro.sh reports UBUNTU, but
the Bodhi flavor can be found:

% uname -a ; uname -m; uname -r; uname -s; uname
Linux bodhi431.vm.math.utah.edu 4.11.0-14-generic #20~16.04.1-Ubuntu SMP Wed Aug 9 09:06:22 UTC 2017 x86_64 GNU/Linux
x86_64
4.11.0-14-generic
Linux
Linux

 % ls /etc/*rele*
/etc/lsb-release  /etc/lsb-release.dpkg-dist  /etc/os-release

% cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION="Bodhi Linux"

% cat /etc/lsb-release.dpkg-dist
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION="Ubuntu 16.04.3 LTS"

% cat /etc/os-release
NAME="Ubuntu"
VERSION="16.04.3 LTS (Xenial Xerus)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 16.04.3 LTS"
VERSION_ID="16.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
VERSION_CODENAME=xenial
UBUNTU_CODENAME=xenial


Arch

ArchLinux is one of the few GNU/Linux distributions that uses
a rolling-release model, with continuous updates, and no fixed
version number.

distro.sh reports OTHERGNULINUX, but it could easily identify
ArchLinux:

% uname -a ; uname -m; uname -r; uname -s; uname
Linux archlinux.vm.math.utah.edu 4.13.11-1-ARCH #1 SMP PREEMPT Thu Nov 2 10:25:56 CET 2017 x86_64 GNU/Linux
x86_64
4.13.11-1-ARCH
Linux
Linux

% ls /etc/*rele*
/etc/arch-release  /etc/lsb-release  /etc/os-release

% cat /etc/arch-release
[no output]

% cat /etc/lsb-release
LSB_VERSION=1.4
DISTRIB_ID=Arch
DISTRIB_RELEASE=rolling
DISTRIB_DESCRIPTION="Arch Linux"

% cat /etc/os-release
NAME="Arch Linux"
PRETTY_NAME="Arch Linux"
ID=arch
ID_LIKE=archlinux
ANSI_COLOR="0;36"
HOME_URL="https://www.archlinux.org/"
SUPPORT_URL="https://bbs.archlinux.org/"
BUG_REPORT_URL="https://bugs.archlinux.org/"


HURD
  % uname -a
        GNU hurd3.vm.math.utah.edu 0.9 GNU-Mach 1.8+git20171101-486/Hurd-0.9 i686-AT386 GNU
        % name -s
        GNU
	% uname
	GNU
        % uname -m		
        i686-AT386
        % uname -r
        0.9
        % cat /etc/os-release
        PRETTY_NAME="Debian GNU/Hurd buster/sid"
        NAME="Debian GNU/Hurd"
        ID=debian
        HOME_URL="https://www.debian.org/"
        SUPPORT_URL="https://www.debian.org/support"
        BUG_REPORT_URL="https://bugs.debian.org/"
