By Paul Murphy, author of The Unix Guide to Defenestration
Unix is really a set of ideas with products like Solaris, OpenBSD, or Red Hat Linux representing somewhat different implementations of those ideas.
In most cases those differences are so minor that your Unix syadmin skills really are almost directly portable between variants but something as silly as:
% prstat -t
prstat: Command not found
makes an indelible first impression on a new client or employer.
My solution to this is to carry around a custom version of .cshrc for each major OS. These embed variant or release specific information in aliases, environment variables, and $path. Once loaded, I can use what I know without worrying about being embarassed by minor differences in command naming, location, or options.
In my HP-UX file, for example, I have:
alias df 'bdf'
By doing this for most major variants, I end up knowing that
"% df" means
"df -K" no matter which Unix variant I'm using.
Similarly, some of the things you tend to forget to set can be given appropriate values in each variant specific file. Thus:
setenv XPSERVERLIST $LPDEST
setenv SYBASE /opt/dbs/sybase
will either force me to figure out key things early on or do it for me.
Similarly stuff like:
set path=($path /user/shared/OpenOffice.org1.0.3/program)
and being sure that /bin appears in $path before /usr/local/bin, ensures that standard utilities answer the call without much effort on my part to accomodate locally idiosyncratic file placements.
When visiting other sites I carry these on a floppy and either ask the local sysadmin to load them from a PC or just ftp my home system to get them. Either way, few techies ever see a problem with it, altough some client managers from non Unix environments have questioned whether I might not be sneaking evil things onto their system - that's a battle you have deal with on a case by case basis. Once it's loaded, however; you're pretty much at home regardless of the local Unix variant.