The most obvious way to run a command remotely is to specify it on the ssh command line. The ssh command is always interpreted by the remote user's shell.
ssh [email protected] '. ~/.profile; command_that_needs_environment_variables'
ssh -t [email protected] '. ~/.profile; exec zsh'
Shared accounts are generally a bad idea; if at all possible, get separate accounts for every user. If you're stuck with a shared account, you can make an alias:
ssh -t [email protected] 'HOME=~/bob; . ~/.profile; exec zsh'
 If you use public key authentication (again, recommended), you can define per-key commands in ~/.ssh/authorized_keys. See this answerthis answer for more explanations. Edit the line for your key in ~/.ssh/authorized_keys on the server (all on one line):
command="HOME=$HOME/bob;
     if [ -n \"$SSH_ORIGINAL_COMMAND\" ]; then
       eval \"$SSH_ORIGINAL_COMMAND\";
     else exec \"$SHELL\"; fi" ssh-rsa AAAA…== [email protected]
 
                