I work on a lot of different machines, all running Ubuntu (not always the same version). I have some really basic customizations to my prompt I would like to have available on all machines.
I currently use Dropbox and store all my other "dot files" there, such as my .vim/ .vimrc .gitconfig .ackrc. I then just link them to my home folder from my Dropbox folder. Voilà, all machines in sync.
I am unsure what the repercussions of doing something like this with my bashrc is. Can any one offer suggestions? Maybe an easy way to load a separate file in the bashrc?
I don't see any real repercussions, but I suppose it depends on what you have in there! If it's just quick aliases that work the same everywhere, and cosmetic stuff, I don't see any issues.
You could either just move your
.bashrc
to someplace in your Dropbox folder and then symlink it on each of the machines.I actually have quite a few dotfiles in my home folder which are actually symlinks to shared folders in my Dropbox account.
Another option is that you could create a file inside your dropbox folder to be sourced by your
.bashrc
:I.e., in your
.bashrc
, put:source $HOME/Dropbox/dotfiles/bashrc-shared-settings
and then create a bashrc-shared-settings file which is the stuff you want used on all machines, and you can still keep separate
.bashrc
files.(You can also abbreviate
source
as just.
in bash.)The main risk that I can think of is that you must remember that synchronization is not the same as backing up. Any mistakes will be synced to all of your machines.
To include a separate file in your
~/.bashrc
add something like so:Where ~/.foo is the separate file.
Usually, centralizing configuration files is a good thing! If you want to customize what runs based off of a given OS or hostname, you can do something like the following in your .bashrc:
Then, create a .bash directory and the os and host directories under that and put any custom settings in files called <whatever>.sh where <whatever> is the os type or the host you want customized.
I keep all of these files in dropbox, and I have a bash script called link_dropbox in my Dropbox folder that helps me to facilitate linking them in:
I keep my .bashrc symlinked in Dropbox along with lots of other config files (.gitconfig, .vimrc, etc).
I source a file called .bashrc_local at the end of it for other settings which I might want to keep machine independent.
Syncing with Dropbox is great, but if you don't want to install Dropbox on the server, you can implement my method.
Create a file with your shared bash settings in your Dropbox folder.
Right click the file and click "Share Link" from the Dropbox menu.
Then click "Get Link." This will copy the shared link to your clipboard.
Add ?dl=1 to the end of the shared file. This lets you get the raw file. Your shared link should now look similar to mine: https://dl.dropbox.com/s/h25q5c3czo6mnjo/shared_bash_settings.sh?dl=1
Add this line to ~/.bashrc
source $HOME/.bash_shared_settings
Create a cronjob with your preferred interval using this command (Replace with your Dropbox Shared File!)
*/30 * * * * curl -sS https://dl.dropbox.com/s/h25q5c3czo6mnjo/shared_bash_settings.sh?dl=1 > ~/.bash_shared_settings; chmod +x ~/.bash_shared_settings;
This will update your copy of ~/.bash_shared_settings every half an hour. Every time you reload your session, you'll include the latest changes.