The environment in which UNIX originally developed was very
programmer oriented, and this persists
today
.
While most people perceive this as being negative, it does
have some good points.
Programmers have a tendency to be lazy (or rather, to not
waste effort).
This means that interactive shell sessions generally have
many facilities designed to reduce user
effort
.
Another result of the heavy programmer bias in UNIX is the relatively huge variety in solving problems. Most programs have a larger number of options than expected. Older versions of UNIX tend to have rather cryptic, and often inconsistent, single letter switches. Newer versions often incorporate switches which use complete words or phrases.
Part of the reason for very concise command names and switches is historical. Early UNIX computers were accessed by teletypes, which had very stiff keys. Shorter command names and switch names meant less wear and tear on the users fingers. This early association with teletypes persists today, with names like tty1, ttyS0 and pttyS3 to refer to various kinds of serial connections to the machine.
UNIX is case sensitive. For example, with the directory listing command ls, the -r switch reverses the sense of a sorting operation, while the -R switch asks for a recursive listing (all directory levels at the indicated level and below). One gotcha on this, most versions of UNIX still support ancient teletypes which were upper case only. If your login ID is entered in all uppercase, UNIX sets itself so that all your input is converted to lowercase.
The filesystem used by the various flavours of UNIX is a logical filesystem; it appears to be one huge, logically connected unit. But the inclusion of mount points at directories for additional disk partitions, hard links to files within a single partition and symbolic links (possibly across partition) can easily make the UNIX filesystem very complex.
Error handling under UNIX is likely to be inconsistent in some regard. Typically, programs return an error code of 0 to indicate success, and some other number for failure. This presupposes there is only a single kind of success which can be indicated by a program. Also, the choice of failure codes is left entirely to the programmers whim.
Unix is a highly portable operating system. Most of any UNIX operating system is written in the C programming language. Once a C compiler has been ported to a new architecture, it is usually an ``easy task'' to get UNIX up and running on it. As an example, Linux has been ported to, or there are active efforts underway to port it, on the following computer architectures:
UNIX tends to be very open - to demonstrate a rather large
degree of vendor independence.
Sure, there are proprietary UNICES
out there.
And programmers and system/networking administrators are
free to make use of proprietary extentions to the standard
UNIX interfaces.
But many feel that it is not in their best interest to make
use of these extentions, or if they do they document why and
how they did this.
One place where the differences between various flavours of
UNIX makes itself felt is the format of the output from
``standard'' system routines.
Other differences spring from different options to the
programs to accomplish the same tasks, and different
placements of the various programs and configuration files.
UNIX is structured to have a more or less standard interface to the kernel through various ``system calls''. Advances to the kernel may be subject to ``instability'' in newer system calls. A good example of this is the concept of having ``threaded'' processes. The family of system calls is augmented by more or less common libraries of subroutines and functions, such as the standard C library.
Oh, if you want more history on UNIX, one URL of more information is: http://cm.bell-labs.com/cm/cs/who/dmr/hist.html Just looking at the URL, I would say that this is something that Dennis M. Ritchie has archived, but as I have never visited the URL I am just guessing. But certainly, there is information at Bell Labs which covers UNIX and how it developed.