Unix Incompatibility Notes:

Introduction Jan Wolter

To some degree, the problem addressed by these notes is a vanishing one. The variation among Unixes seems to be much less than it used to be. This is partly because many standards have been established, and partly because the availability of open source versions of virtually all Unix software has reduced the temptation for everyone to implement the same things differently. Not surprisingly, support for older Unixes has been vanishing from many widely distributed packages. Three years ago, any open source software package could be compiled on SunOS 4.1. Today nearly all require at least some fixing. Many developers support little beyond the free Unixes and Solaris.

Nevertheless, these notes describe a few of the differences in Unix and C library implementations, and give advice on how to program around them. These notes are not meant to substitute for "man" pages. Some web searching will find you man pages for most any system you are interested in. Some links to man pages are included below. Instead of describing any one version of these commands in detail, I focus on differences between implementations, and possible pitfalls that confront the programmer who wants his code to work in lots of places.