Você pode fazer isso:
case "$HOSTNAME" in:
systemA*|systemB)
# some local definitions here
;;
systemC*|systemD)
# some local definitions here
;;
*)
if [ "$(uname)" = "Darwin" ]; then
echo "I'm on a Mac!"
else
echo "No bashrc definitions for $HOSTNAME"
fi
esac
uname fornecerá várias informações básicas sobre o sistema em que você está. uname --help para opções.
Atualização:
Como alternativa (e é isso que eu faço, você pode ver aqui em o fim da minha .bashrc) o que você pode fazer é criar .bashrc_local_Darwin para configuração específica do Mac e .bashrc_local_Linux para coisas específicas do Linux. Estes podem entrar em controle de versão como eles ainda são gerais para todos os macs e todas as caixas de linux que você conecta. Então, o que você faz é criar um .bashrc_local em cada caixa que você quer de uma configuração personalizada somente para aquela caixa que você não coloca no controle de versão. Você, então, fonte esses arquivos se eles existirem , et volià, você tem um sistema muito limpo com a instrução case...esac cludgy e difícil de manter.