Existem (pelo menos) quatro definições diferentes do termo "Unix": 1) a série de sistemas operacionais da Bell Labs, 2) a família de sistemas operacionais derivados do código fonte de 1), 3) qualquer sistema operacional sistema que passou na certificação pelo The Open Group (ou 3a) qualquer sistema operacional que passasse na certificação pelo The Open Group, mas não pode pagar a taxa de certificação), 4) qualquer sistema operacional que pareça "Unix". Por exemplo, com exceção de distribuições especializadas como o Android, a maioria das distribuições Linux se enquadra em 4), algumas em 3a) e algumas em 3).
Jörg W Mittag
1
OTOH, mesmo que o OSX fique abaixo de 2) e 3), eu argumentaria que ele não se enquadra em 4). O Windows NT, pelo menos em algumas versões, satisfaz 3), mas definitivamente não 4).
Jörg W Mittag
Respostas:
17
O POSIX define uname("nome Unix") para fornecer informações sobre o sistema operacional e a plataforma de hardware; running unamefornece o nome da implementação do sistema operacional (ou de acordo com a coreutilsdocumentação, o kernel). Você pode fazer isso interativamente em um terminal ou usar a saída em um script.
Nos sistemas Linux, unameserá impresso Linux.
Nos sistemas Mac OS X, unameserá impresso Darwin. (A rigor, 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 aponta Rob , se você estiver executando o Mac OS X ( Darwinconforme indicado uname), estará executando uma versão certificada do Unix ; se você estiver executando o Linux, não estará.
Em um Mac, existem muitas outras possibilidades; seu script pode acabar rodando no Solaris ( unameserá impresso SunOSentão), no FreeBSD ( FreeBSD), no Windows com Cygwin ( CYGWIN), MSYS ou MSYS2 ( MSYS), um shell MinGW ou MinGW-w64 ( MINGW64, MINGW32), Interix ( Interix) e provavelmente outros Eu não estou ciente.
uname -aimprimirá todas as informações disponíveis, conforme determinado por uname, mas é mais difícil de analisar.
O problema é que o uname não prova que está executando o Unix. Ele fornece apenas um nome do sistema operacional que pode não ser um sistema Unix. Linux, por exemplo, não é Unix.
Rob
@ Rob, em nenhum lugar Stéphane ou eu digo isso; na verdade, estamos explicitamente diferenciando entre Linux e Unix (ou melhor, Mac OS X).
Stephen Kitt
3
A menos que você tenha instalado outra coisa, os Macs não executam o Linux. Os Macbooks rodam o sistema operacional da Apple chamado OSX, que é certificado Unix e, portanto, é a resposta para sua pergunta.
Obviamente, algumas versões do Linux também são certificadas como Unix, então a questão passa a ser: ele está executando Linux ou Unix?
Jörg W Mittag
@ JörgWMittag Vejo que a única versão do Linux certificada como Unix é um servidor LDAP executando o SUSE da IBM, mas nenhum outro é ou nunca foi ou provavelmente o será. minha resposta permanece a mesma, no entanto. Se ele não instalou o Linux em um Mac, ele está executando o OSX, que é o Unix.
Respostas:
O POSIX define
uname
("nome Unix") para fornecer informações sobre o sistema operacional e a plataforma de hardware; runninguname
fornece o nome da implementação do sistema operacional (ou de acordo com acoreutils
documentação, o kernel). Você pode fazer isso interativamente em um terminal ou usar a saída em um script.Nos sistemas Linux,
uname
será impressoLinux
.Nos sistemas Mac OS X,
uname
será impressoDarwin
. (A rigor, 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 aponta Rob , se você estiver executando o Mac OS X (
Darwin
conforme indicadouname
), estará executando uma versão certificada do Unix ; se você estiver executando o Linux, não estará.Em um Mac, existem muitas outras possibilidades; seu script pode acabar rodando no Solaris (
uname
será impressoSunOS
então), no FreeBSD (FreeBSD
), no Windows com Cygwin (CYGWIN
), MSYS ou MSYS2 (MSYS
), um shell MinGW ou MinGW-w64 (MINGW64
,MINGW32
), Interix (Interix
) e provavelmente outros Eu não estou ciente.uname -a
imprimirá todas as informações disponíveis, conforme determinado poruname
, mas é mais difícil de analisar.fonte
A menos que você tenha instalado outra coisa, os Macs não executam o Linux. Os Macbooks rodam o sistema operacional da Apple chamado OSX, que é certificado Unix e, portanto, é a resposta para sua pergunta.
fonte
A resposta é:
Ou:
fonte
cat /proc/version
produzir a mensagem de errocat: /proc/version: No such file or directory
?xfs
vir, pode ser IRIX ;-). (Mas não em um Mac, eu vou te dar isso!)