All of my dotfiles are as universal as possible so they usually work on Linux, BSD, and Solaris. All of my systems use exactly the same dotfiles so I can easily move my home environment. Some of the universal dotfiles will source local dotfiles so you can customize individual systems. For example, the universal .bashrc sources .bashrc_local. The dotfiles sync script described below will not update the local variants. In most cases I find I never need any local tweaks with the exception of Mutt -- obviously the universal muttrc needs to source muttrc_local.
.dotfiles sync script
I have a shell script that I run periodically to get the latest versions of dotfiles.
The first thing I do on a new system is get the .dotfiles script and then run it to sync all the other dotfiles. Running the following commands will erase your current home dotfiles (.bashrc and friends).
cd ~ wget http://www.noah.org/engineering/dotfiles/.dotfiles chmod 755 .dotfiles ./.dotfiles
The .dotfiles sync script never updates the .bashrc_local or muttrc_local or other *_local files.
I considered using something like Subversion to store these dotfiles, but I found this little script to be simpler and quicker for my needs. Plus wget, tar, and gzip are almost always available whereas I usually have to install Subversion on a new system.
I keep all of my beloved UNIX dotfiles in an gzip archive here:
You can browse the individual dotfiles here:
.bashrc .bash_aliases .vim/ .vimrc .inputrc .lynxrc .mailcap .pythonrc .screenrc bin/ .fonts/ .mutt/ .subversion/
I try to get all of the bash dotfiles to work on both Linux and BSD, with Linux being favored. I don't like my dotfiles to depend too much on the platform I'm running on, but this doesn't always work too well with older BSD systems. It's harmless when it fails -- sometimes I get warnings when I login on really old BSD systems.