Many times there are several identities which one user uses: for work, open-source, academia etc., all require different ssh keys, editor configurations, git configs etc.I was wondering if there is any tool for switching between such virtual profiles with the same unix user. Preferably it will enable you to also have different default binaries/libraries (for example, in one profile python will run python2.7 while in other it will be python3).I know there is an option to set it up using a combination of environment variables, aliases and linked files but I was wondering if there is a more clean option like virtualenv in python provides. 
several virtual profiles for the same user
bash;shell;environment variables;profile
You could probably use git branches for this. Set your home dir up in a branch and then create another branch and configure this how you'd like for this other profile. It would be a matter of switching branch and then you'd have effectively a different looking home dir. Then you'd probably need to source your environment or run another login shell.I haven't tried this myself but I think it should work.