“Examine methods for standardizing your interface to simplify movements between different UNIX systems. If you manage multiple UNIX systems, particularly in a heterogeneous environment, then the hardest task can be switching between the different environments and performing the different tasks while having to consider all of the differences between the systems. This article does not cover specific differences, but you’ll look at ways that can provide compatible layers, or wrappers, to support a consistent environment.”
When dealing with a heterogenous environment (a mixture of Linux, BSD, Solaris, HP/UX, Macs, Windows), the easist way to make your life simpler is to just install the GNU command-line utilities on all of them (via Cygwin for Windows). The GNU stuff can coexist with the native tools, and then you don’t have to remember slight variations in command-line switches for each system.
I tend to create my own environment like this too, with a bunch of aliases and functions on every machine I use for all the regular things I do.
But the downside of that having someone ask me how to do something when I’m at their machine. Then I stand there trying to remember what my aliases really stand for. It makes me look like a fish out of water–which I am at that point.
I maintain a tool trying to solve this problem and more:
http://reductivelabs.com/projects/puppet
Puppet’s lowest layer is a library that abstracts the differences in users, groups, filesystem mounts, or just about anything else; it’s easy to add new types, and easy to add new backends for existing types (someone today just sent in support for up2date as a backend to packaging, in about 30 minutes of work with no prior experience).
In addition to the library, though, I’ve got a client/server architecture that makes it simple to manage a large number of machines using the same configuration (with a flexible configuration language that allows you to deal with all of the heterogeneity in your environment).