As much as I'm OCD about this sort of thing myself, I can't help thinking that this guy is trying to solve a problem that doesn't exist.
The biggest problem I have if just the effort of keeping all the environments unified on all the boxes I administrate. Because of this, these days I just don't bother with large and complicated custom shell environments - just a few aliases on my workstation and that's about it.
The crux of the matter is if time spent trying to keep your environment in sync across your infrastructure is greater than the time you save due to increased productivity - then it's really just a wasted exercise.
What I'd be more interested in is a way to have a .remote.bashrc running on my workstation that will then automatically set the environment for any servers I SSH into (thus removing the need for me to keep copies on each server).
Actually, that last idea should be pretty easy, I've just never thought about it until now....
With today's tools it's not that difficult to sync your shell environment. Keep your config files in a private git repo and add a few lines to your .bashrc that does the following in the background:
- git (pull|rebase|reset --hard) from repo
- recreate all symlinks
Any time you make changes, push it up to the repo. An alternative for some is to symlink against files stored in Dropbox.
In ~/.ssh/config there is a directive called LocalCommand that you can use to do an rsync (or anything else you want) just prior to making the connection. This way you can have it automatically update remote hosts with your shell scripts each time you connect.
This is way too complex. Just put everything in .bashrc and symlink .profile to .bashrc. Then if there's something you don't want executed in non-interactive mode in .bashrc, put it in an if statement.
The biggest problem I have if just the effort of keeping all the environments unified on all the boxes I administrate. Because of this, these days I just don't bother with large and complicated custom shell environments - just a few aliases on my workstation and that's about it.
The crux of the matter is if time spent trying to keep your environment in sync across your infrastructure is greater than the time you save due to increased productivity - then it's really just a wasted exercise.
What I'd be more interested in is a way to have a .remote.bashrc running on my workstation that will then automatically set the environment for any servers I SSH into (thus removing the need for me to keep copies on each server).
Actually, that last idea should be pretty easy, I've just never thought about it until now....