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?
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.
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.
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