Unix vs. Linux vs. BSD: A short comparison
One of the most frequently asked questions is the one on the differences between Unix, Linux, and BSD. I will try to answer that question in short. This shall not be used as a flame bait. I admit prefer using BSD, but that is personal based on experience.
I will not go too much into technical details; I will only be explaining commonalities and differences between the aforementioned *NIX operating systems. But let me hasten to add that this essay is based on the work of Matthew D. Fuller, Greg Lehey, and Dru Lavigne. All credits go to them.
What is Unix?
Unix is an operating system originally developed in the late 60's at Bell Labs by Ken Thompson and Dennis Ritchie. Perhaps Unix is the single most influential operating system in modern computing. Every general-purpose computing device you will find nowadays, and a lot of specific-purpose computing devices, will be using ideas, concepts, and often source code from some computer software in the Unix family tree.
When we use the word "Unix," then, we far more often mean the general form, than the specific operating system that carries the name UNIX™. The general form means "any operating system which, in design and execution and interface and general taste, is substantially similar to the Unix system." That means all the BSDs, Linux, Solaris, AIX, HP/UX, and a cast of hundreds or thousands of other operating systems.
What is Linux?
Linux also means several things. It's a kernel, originally written by Linus Torvalds. Linux is also the term for a family of operating systems. I don't care about people discussing how "Linux isn't really an operating system, it's just a kernel", or "It should be called 'GNU/Linux'", or similar topics (even though they are fundamentally correct).
When we say "Linux" we mean Red Hat, Slackware, Debian, Gentoo and hundreds of other distros (distribution), based around a Linux kernel with substantially similar userlands, mostly based on various GNU tools. Thus "Linux" refers to any operating system that is based on or around the Linux kernel.
What is BSD?
BSD stands for "Berkeley Software Distribution". Originally, it was developed at the University of California, Berkeley (CSRG). All new code was released under the BSD license, which basically translates to "Do whatever the hell you want with the code, just give us credit for writing it". Later the 386BSD project started and made it run on the Intel i386 platform. As the 386BSD project wound down, two main groups formed: FreeBSD and NetBSD. In 1995 OpenBSD split from NetBSD and in 2003 DragonFly BSD split from FreeBSD.
When we say "BSD" we mean the general BSD flavor and approach to systems. We have 4 main free BSDs: FreeBSD, NetBSD, OpenBSD and DragonFly BSD.
The influence of Unix in academic circles has led to large-scale adoption of Unix by commercial startups, such as HP-UX, Sequent, and AIX, as well as Darwin, which forms the core set of components upon which Apple's OS X, Apple TV, and iOS are based. The term traditional Unix may be used to describe an operating system that has the characteristics of either Version 7 Unix or UNIX System V.
Linux, from the start, was just a kernel and a kernel by itself isn't very useful. You need userland utilities to make it work. From the beginning, Linux has always been a conglomerate; a kernel from here, a ls from there, vim, perl, gzip, tar, and a bundle of others. Moreover, Linux has never had any sort of separation between what is the "base system" and what is "addon utilities." The entire system is "addon utilities." That is the Linux philosophy.
By contrast, BSD has always had a centralized development model. BSD doesn't use GNU ls or GNU libc, but it uses BSD's ls and BSD's libc, which are direct descendents of the ls and libc that were in the original CSRG-distributed BSD releases. The system as a whole is one piece, not a bunch of little pieces. This, in contrast to Linux's, is the BSD philosophy.