Hay (al menos) cuatro definiciones diferentes del término "Unix": 1) la serie de sistemas operativos de Bell Labs, 2) la familia de sistemas operativos derivados del código fuente de 1), 3) cualquier sistema que ha pasado la certificación de The Open Group (o 3a) cualquier sistema operativo que pasaría la certificación de The Open Group pero no puede pagar la tarifa de certificación), 4) cualquier sistema operativo que se vea y se sienta como "Unix". Por ejemplo, con la excepción de distribuciones especializadas como Android, la mayoría de las distribuciones de Linux se encuentran en 4), algunas en 3a) y algunas en 3).
Jörg W Mittag
1
OTOH, aunque OSX cae por debajo de 2) y 3), diría que no cae por debajo de 4). Windows NT, al menos en algunas versiones, satisface 3), pero definitivamente no 4).
Jörg W Mittag
Respuestas:
17
POSIX define uname("nombre Unix") para proporcionar información sobre el sistema operativo y la plataforma de hardware; running unameda el nombre de la implementación del sistema operativo (o de acuerdo con la coreutilsdocumentación, el kernel). Puede hacer esto interactivamente en una terminal, o usar la salida en un script.
En sistemas Linux, unamese imprimirá Linux.
En sistemas Mac OS X, unamese imprimirá Darwin. (Estrictamente hablando, cualquier sistema operativo con un núcleo Darwin producirá esto, pero es muy poco probable que encuentre algo que no sea Mac OS X en este caso).
Esto le permitirá determinar qué Mac está ejecutando. Como señala Rob , si está ejecutando Mac OS X ( Darwincomo se indica en uname), entonces está ejecutando una versión certificada de Unix ; si está ejecutando Linux, entonces no lo está.
En una Mac hay muchas otras posibilidades; su script podría terminar ejecutándose en Solaris ( unamese imprimirá SunOSluego), en FreeBSD ( FreeBSD), en Windows con Cygwin ( CYGWIN), MSYS o MSYS2 ( MSYS), un shell MinGW o MinGW-w64 ( MINGW64, MINGW32), Interix ( Interix) y probablemente otros No estoy al tanto.
uname -aimprimirá toda la información disponible según lo determinado por uname, pero es más difícil de analizar.
El problema es que uname no prueba que esté ejecutando Unix. Solo da un nombre del sistema operativo que podría no ser un sistema Unix. Linux, por ejemplo, no es Unix.
Rob
@Rob, en ninguna parte Stéphane o yo dijimos eso; de hecho, estamos diferenciando explícitamente entre Linux y Unix (o más bien Mac OS X).
Stephen Kitt
3
A menos que haya instalado algo más, las Mac no ejecutan Linux. Las Macbooks ejecutan el sistema operativo de Apple llamado OSX, que está certificado Unix y, por lo tanto, es la respuesta a su pregunta.
Por supuesto, algunas versiones de Linux también están certificadas como Unix, por lo que la pregunta es, ¿está ejecutando Linux o Unix?
Jörg W Mittag
@ JörgWMittag Veo que la única versión de Linux que está certificada como Unix es un servidor LDAP que ejecuta SUSE desde IBM, pero ningún otro lo ha sido o lo ha sido o probablemente lo hará. Sin embargo, mi respuesta sigue siendo la misma. Si no instaló Linux en una Mac, entonces está ejecutando OSX, que es Unix.
Respuestas:
POSIX define
uname
("nombre Unix") para proporcionar información sobre el sistema operativo y la plataforma de hardware; runninguname
da el nombre de la implementación del sistema operativo (o de acuerdo con lacoreutils
documentación, el kernel). Puede hacer esto interactivamente en una terminal, o usar la salida en un script.En sistemas Linux,
uname
se imprimiráLinux
.En sistemas Mac OS X,
uname
se imprimiráDarwin
. (Estrictamente hablando, cualquier sistema operativo con un núcleo Darwin producirá esto, pero es muy poco probable que encuentre algo que no sea Mac OS X en este caso).Esto le permitirá determinar qué Mac está ejecutando. Como señala Rob , si está ejecutando Mac OS X (
Darwin
como se indica enuname
), entonces está ejecutando una versión certificada de Unix ; si está ejecutando Linux, entonces no lo está.En una Mac hay muchas otras posibilidades; su script podría terminar ejecutándose en Solaris (
uname
se imprimiráSunOS
luego), en FreeBSD (FreeBSD
), en Windows con Cygwin (CYGWIN
), MSYS o MSYS2 (MSYS
), un shell MinGW o MinGW-w64 (MINGW64
,MINGW32
), Interix (Interix
) y probablemente otros No estoy al tanto.uname -a
imprimirá toda la información disponible según lo determinado poruname
, pero es más difícil de analizar.fuente
A menos que haya instalado algo más, las Mac no ejecutan Linux. Las Macbooks ejecutan el sistema operativo de Apple llamado OSX, que está certificado Unix y, por lo tanto, es la respuesta a su pregunta.
fuente
La respuesta es:
O:
fuente
cat /proc/version
produce el mensaje de errorcat: /proc/version: No such file or directory
?xfs
que podría ser IRIX ;-). (¡Pero no en una Mac, te lo daré!)