could .bash_profile, in theory, be slammed into the iCloud Drive and symlinked? [duplicate]

Solution 1:

You can have additional file in Dropbox folder and then on every machine inside your .bash_profile file put this:

FILE="/path/to/DropboxFolder/shared_bash_profile_file"
if [ -f $FILE ];
then
    source $FILE
fi

Solution 2:

It is not a good idea to put the whole .bash_profile in Dropbox, either by tweaking the Dropbox paths or through a symlink. Different machines may require slightly different content of this file. Examples: different software versions installed requiring different configuration, different paths, different names for things such as partitions under /dev/.

Do this instead: put all your customized functions and aliases in a file $HOME/Dropbox/my_functions.sh and then include the line

. $HOME/Dropbox/my_functions.sh

in your .bash_profile.

Solution 3:

I think is better idea to upload to a repository. Let me tell you how I did it.

I version the whole ~/bin directory. My .bash_profile is on that directory. The $HOME/.bash_profile is a link to ~/bin/.bash_profile.

My .bash_profile looks like this:

if [[ $OSTYPE == darwin* ]]; then
    . ~/bin/includes/exports-osx.sh
    . ~/bin/includes/bash-stuff-osx.sh
    . ~/bin/includes/aliases-osx.sh
    . ~/bin/includes/functions-osx.sh
elif [[ $OSTYPE == linux* ]]; then
    . ~/bin/includes/exports-linux.sh
    . ~/bin/includes/terminal-linux.sh
    . ~/bin/includes/aliases-linux.sh
    . ~/bin/includes/ssh-keys-linux.sh
    . ~/bin/includes/bash-stuff-linux.sh
fi

. ~/bin/includes/bash-stuff.sh
. ~/bin/includes/aliases.sh
. ~/bin/includes/powerline.sh
. ~/bin/includes/functions.sh
. ~/bin/includes/work-stuff.sh

That way I can easilly track changes.

To keep the repo update you can create a cron or LaunchAgents script that pull the changes on your ~/bin directory once a day:

cd ~/bin && git pull origin $(git name-rev --name-only HEAD)