Sinceramente, não da pra entender nada desse script... hehehe...
Recomendo você utilizar a técnica de here document...
Seu script ficaria assim:
#!/bin/bash
echo ** Inicializando Processos **
if [ $1 = "B" ]
then
ssh user@ip <<THISisTHEend
X start group1 now
X start group2 now
X start group3 now
X start MC now
THISisTHEend
else
ssh user@ip X start $3 now
fi
#fim do script
Só mais uma coisa...
Você está declarando as variáveis:
SBASEA="ssh usuario@ip . ~/.bash_profile;"
SBASEB="ssh usuario@ip . ~/.bash_profile;"
portanto, quando o bash substitue as variáveis, seu comando fica:
ssh usuario@ip . ~/.bash_profile; X start group2 now
Você está entendendo a sintaxe do seu comando? O ponto e virgula server para separa comando numa mesma linha de código, portanto você está executando um comando remoto (. ~/.bash_profile) e um comando local (X start group2 now). É isso mesmo que você deseja fazer?