Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

What is the very fundamental difference between Unix, Linux, BSD and GNU? Unix was the earliest OS, so the term 'Unix like' is understandable, since they have kernel, file system structure, most of the commands, users etc are same as Unix. Still why are they different? What made them set apart? Is it the kernel?

share|improve this question

closed as too broad by slm, Anthon, Renan, jasonwryan, terdon Dec 11 '13 at 18:12

There are either too many possible answers, or good answers would be too long for this format. Please add details to narrow the answer set or to isolate an issue that can be answered in a few paragraphs.If this question can be reworded to fit the rules in the help center, please edit the question.

This question is possibly answered by the answer to Were all Unix commands re-written in Linux?. – Michael Kjörling Dec 11 '13 at 16:15
up vote 10 down vote accepted

That is a difficult question to answer.

Fist "Unix Like" or "*nix" usually means POSIX. All the systems you listed are POSIX systems. POSIX is a set of standards to implement.

Now for the harder questions.

GNU isn't really a OS. It's more of a set of rules or philosophies that govern free software, that at the same time gave birth to a bunch of tools while trying to create an OS. So GNU tools are basically open versions of tools that already existed but were redone to conform to principals of open software. GNU/Linux is a mesh of those tools and the Linux kernel to form a complete OS, but there are other "GNU"s. GNU/Hurd for example.

Unix and BSD are "older" implementations of POSIX that are various levels of "closed source". Unix s usually totally closed source, but there are as many flavors of Unix as there are Linux if not more. BSD is not usually considered "open" by some people but in truth it is a lot more open then anything else that existed. It's licencing also allowed for commercial use with far fewer restrictions as the more "open" licences allowed.

Linux is the new comer. Strictly speaking it's "just a kernel", however, in general it's thought of as a full OS when combined with GNU Tools and a bunch of other things.

The main governing difference is ideals. Unix, Linux, and BSD have different ideals that they implement. They are all POSIX, and are all basically interchangeable. They do solve some of the same problems in different ways. So other then ideals and how they chose to implement POSIX standards, there is little difference.

For more info I suggest your read a brief article on the creation of GNU, OSS, Linux, BSD, and UNIX. They will be slanted towards their individual ideas, but when read though you will get a good idea of the differences.

share|improve this answer
note: not everything is POSIX. e.g. see man unimplemented (IIRC, it might be man security) on a GNU/Linux system. – strugee Dec 11 '13 at 16:21
Strugee is correct. They are not fully compliant, but they are trying to be. Not sure how to work that into the answer though. Unix-Like is also technically different then POSIX but in general when people say Unix-Like they usually mean POSIX. – coteyr Dec 11 '13 at 16:33
Some complementary info in this Q&A. – comet hapax d'ajax Dec 11 '13 at 16:39
no, the Linux kernel developers don't ever intend to be POSIX-compliant. I forget where I read this (I looked in the manpages but couldn't find it) but there are certain syscalls that will never be implemented due to security considerations. – strugee Dec 11 '13 at 17:10
I believe GNU was originally intended to be an OS. – Faheem Mitha Dec 11 '13 at 22:42

Linux is not an OS, it's a kernel. Linux by itself has no 'userland' environment (no apps, no commands, no ...etc...).

If you want to have a complete OS, you have to add an userland to your kernel. Historically, for Linux, it's GNU. All(?) Linux distributions are not 'real Linux' distributions. They are GNU/Linux (GNU + Linux) distributions.

BSD is a 'unix-like' complete OS, with it's own kernel and it's own userland (no linux kernel nor GNU).

GNU/Linux and *BSD family (FreeBSD, OpenBSD and NetBSD) are 'unix-like' OS, they behave like Unix.

Here is a comparison between (GNU)/Linux and *BSD : http://www.freebsd.org/doc/en/articles/explaining-bsd/comparing-bsd-and-linux.html

share|improve this answer
your link does not work – Anthon Dec 11 '13 at 16:45

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