Keeping my zsh or bash profile synced up on all my machines
Solution 1:
This is how I do it:
I never put real content on the
~/.bashrc
or~/.bash_profile
files, instead those files are just symlinks to the real configuration files kept in a subdirectory in my home folder, for example~/dotfiles/bashrc
and~/dotfiles/bash_profile
.I keep the
~/dotfiles
folder under source control using Git, and hosted at GitHub.comWhen I install a new system, I just clone the GitHub repository to a new local
~/dotfiles
folder and create all the symlinks (currently by hand, though this step should be easy to automate).I use this same procedure for other config files, like
.hgrc
(for Mercurial),.vimrc
and several others.Whenever I edit one of the configuration files, I just commit and push to GitHub, and then pull in every other machine.
This is still somewhat laborious and manual, but I've been happy with it.
This is the current content of my ~/dotfiles
folder:
~/dotfiles
|-- bash
| |-- aliases
| |-- config
| |-- env
| `-- promptcolors
|-- bash_profile
|-- bashrc
|-- gitconfig
|-- gvimrc
|-- hg-templates
| |-- map-cmdline.dlog
| |-- map-cmdline.nlog
| |-- map-cmdline.sglog
| `-- map-cmdline.slog
|-- hgrc
|-- ssh
| `-- config
|-- vim
| |-- after
| |-- colemak-mappings.vim
| |-- colors
| |-- doc
| |-- filetype.vim
| |-- ftplugin
| `-- plugin
`-- vimrc
I stole this idea from the great Peepcode Advanced Command line screencast (worth the $9 in my opinion).
And this is where I keep my GitHub repository, in case you want to take a look. Don't expect anything of great interest, I'm just a bash/command line newbie.
http://github.com/sergio/dotfiles
Solution 2:
For all the people still trying to find the best solution for this problem, there is now a very actively maintained tool that does everything you need and more:
https://github.com/lra/mackup
It goes far beyond syncing zsh or bash profiles. It can sync settings of a large amount of tools. Essentially, it uses the same symlink concept as the accepted answer but automates it so you only ever need two commands:
mackup backup
mackup restore
Solution 3:
There are a number of different tools that will accomplish this goal
- Hermit https://github.com/bike-barn/hermit
- VCSH https://github.com/RichiH/vcsh
Or see the big list of all things dotfiles related at http://dotfiles.github.io/
(Full disclosure: I am the original author of Hermit and still one of the primary maintainers)