O POSIX define uname ("nome do Unix") para fornecer informações sobre o funcionamento plataforma de sistema e hardware; executando uname fornece o nome da implementação do sistema operacional (ou de acordo com a documentação coreutils , o kernel). Você pode fazer isso interativamente em um terminal ou usar a saída em um script.
Nos sistemas Linux, uname imprime Linux .
Nos sistemas Mac OS X, uname imprime Darwin . (Estritamente falando, qualquer sistema operacional com um kernel Darwin produzirá isso, mas é muito improvável que você encontre algo diferente do Mac OS X nesse caso.)
Isso permitirá que você determine o que qualquer Mac está executando. Como Rob aponta, se você estiver executando o Mac OS X ( Darwin conforme indicado por uname ) , então você está executando uma versão certificada do Unix ; se você está rodando Linux, então você não está.
No Mac existem muitas outras possibilidades; seu script pode acabar sendo executado no Solaris ( uname imprimirá SunOS ), no FreeBSD ( FreeBSD ), no Windows com Cygwin ( CYGWIN ), MSYS ou MSYS2 ( MSYS ), um MinGW ou Shell MinGW-w64 ( MINGW64 , MINGW32 ), Interix ( Interix ) e provavelmente outros que eu não conheço.
uname -a imprimirá todas as informações disponíveis, conforme determinado por uname , mas será mais difícil de analisar.