Originally posted by: jhu
come to think of it, what defining characteristics make an operating system "unix" or "unix-like"?
Mostly nowadays it's resemblance. X Windows for GUI. Unix shell. Unix directory structure. Unix utilties.
I've had people argue that in that case Windows is Unix-like because of the POSIX compatability built into the NT kernel and it's ability to present the file system as a Unix-like file system through things like SFU and such.
There is a certain 'Unix' philosophy to designed software and it shows in a end product.
Things that are highly valued are things like portable software. A lot of Linux desktop could be improved quickly, but people value portability of everything so they have to work on getting it 'right'. They want stuff to work well on not only Linux, but OpenBSD, FreeBSD, Solaris, and often OS X and Windows.
That's just a example.
Other things like following a similar directory tree system with root and mounted directories and such. Also things like device files you can interact with.
Things like being able to pipe data from applications to another is Unix-Like.
Another example of something Unix-like is having strong differentials between layers of software and high level of abstraction to keep things seperated.
For instance in Linux I can have my operating system running on a harddrives. I can have my operating system running on a remote server over a network...
Or I can do things like having my operating system running in a chroot environment in another operating system with it's file system being a combination of a compressed read-only file system with directory taken out of another file system running the 'parent' operating system overlaid over it saving the differences. All of which is booted up over a network running on a diskless desktop.
It doesn't matter. As long as the file system does it's job and is relatively posix compliant I can be doing anything. There is no realy oddball dependancies between system layers unless your dealing with very specialized software.
TCP/IP protocol stack and the OSI protocol layers model is something that is very Unix-like in it's approach. Each having a seperate layer
And the 'everything is a file' thing.
And the text files for configuration.
Another Unix-ism is that text is the universal data storage medium. Out of that we have XML, which is sort of crappy if not used correctly, but is essenctially just plain text file with rules on formatting.
Nowadays it's not nearly as odd as it was at other points. A lot of Unix-isms is taken for granted.
For instance the user group model with read/write/execute permissions is something that Windows adopted with a few modifications. That sort of concept originates from Unix systems.
Another example of Windows being Unix like is that the DOS command line is very Unix-like in a lot of ways.
Not suprisingly the first operating system that Microsoft developed and sold was Xenix, which is a Unix operating system based on AT&T code. Ironicly a lot of the development worked was subcontracted out to SCO by Microsoft.
So talking about what makes something 'Unix'-like doesn't make so much sense because people don't considure Windows Unix or Unix-like, but it borrowed a great deal of ideas and basic concepts from Unix. It doesn't make sense often because you can go 'this, this, and this' is what makes something 'unix' but Windows has all that stuff also.
Microsoft, as I understand it, even used Unix for it's sole development envioronment all the way up until Windows 3.11 came out.
But of course Microsoft lacks the highly structured development stucture, the device file stuff, the disctinct software layers, and such that Unix-like systems will typically have.
Another example is Unix is something that is generally realy open. Most aspects of the system is open and even with propriatory systems it's common for admins to deal with kernel manipulations. Originally AT&T Unix gave away source code. There would be books you could buy which was nothing by the source code for Unix. They gave it away no-cost to various educational institutions and businesses and such.
The difference between "UNIX proper" vs "Unix-like" would be code heritage.
FreeBSD is UNIX. Solaris is UNIX. Linux is NOT UNIX.
Solaris is based on system-V originated code and BSD originated code via SunOS. FreeBSD a decendant of original BSD Unix which was modified AT&T code. Although I would expect that from Solaris and BSD almost all traces of AT&T code and other code developed by companies is completely gone at this point the design of the software and operating system kernels is still going to show it.
Unix is so basic to most everything we deal with in modern computing environment from everything to how the WWW and the Internet works to how command line works in operating systems and abstraction layers and such. The best way to see something is Unix-like is by seeing something that is very much not like Unix.
Fort instance I took a class for a while for OS/400 operating system and I work with a VSE/ESA operating system at my job. NOT UNIX LIKE AT ALL. Very odd. No real directory structure. For OS/400 you had to compile files and the entire 'file system' was one huge relational database. Very bizzare. No layers. No ability to swap out one portion of the operating system for another. Not even realy programs you run or anything like that. It was presented to the user as just one gigantic menu driven system. VSE/ESA is a little bit less like that, but still it's all menus with 'command line' stuff that is NO WERE NEAR anything like a Unix shell. Everything is just one huge program.
Frankly, it's miserable.
That's how I see it anyways. Other people will have different viewpoints.