Es gibt (mindestens) vier verschiedene Definitionen des Begriffs "Unix": 1) die Reihe von Betriebssystemen von Bell Labs, 2) die Familie der Betriebssysteme, die aus dem Quellcode von 1) abgeleitet sind, 3) jedes Betriebssystem System, das die Zertifizierung durch The Open Group (oder 3a) bestanden hat, jedes Betriebssystem, das die Zertifizierung durch The Open Group bestanden hat, sich aber die Zertifizierungsgebühr nicht leisten kann), 4) jedes Betriebssystem, das wie "Unix" aussieht und sich anfühlt. Mit Ausnahme von Spezialdistributionen wie Android fallen beispielsweise die meisten Linux-Distributionen unter 4), einige unter 3a) und einige unter 3).
Jörg W Mittag
1
OTOH, obwohl OSX unter 2) und 3) fällt, würde ich argumentieren, dass es nicht unter 4) fällt. Windows NT erfüllt zumindest in einigen Versionen 3), aber definitiv nicht 4).
Jörg W Mittag
Antworten:
17
POSIX definiert uname("Unix-Name"), um Informationen über das Betriebssystem und die Hardwareplattform bereitzustellen. running unamegibt den Namen der Implementierung des Betriebssystems (oder gemäß der coreutilsDokumentation den Kernel) an. Sie können dies interaktiv in einem Terminal tun oder die Ausgabe in einem Skript verwenden.
unameWird auf Linux-Systemen gedruckt Linux.
unameWird auf Mac OS X-Systemen gedruckt Darwin. (Genau genommen wird dies von jedem Betriebssystem mit einem Darwin-Kernel erzeugt, aber in diesem Fall ist es sehr unwahrscheinlich, dass Sie auf etwas anderes als Mac OS X stoßen.)
Auf diese Weise können Sie feststellen, welcher Mac ausgeführt wird. Wie Rob betont, führen Sie unter Mac OS X ( Darwinwie durch angegeben uname) eine zertifizierte Version von Unix aus . Wenn Sie Linux verwenden, sind Sie es nicht.
Auf einem Mac gibt es viele andere Möglichkeiten; Ihr Skript könnte unter Solaris ( unamewird SunOSdann gedruckt ), unter FreeBSD ( FreeBSD), unter Windows mit Cygwin ( CYGWIN), MSYS oder MSYS2 ( MSYS), einer MinGW- oder MinGW-w64-Shell ( MINGW64, MINGW32), Interix ( Interix) und wahrscheinlich unter anderen ausgeführt werden Ich bin mir nicht bewusst.
uname -adruckt alle verfügbaren Informationen aus, wie von bestimmt uname, aber es ist schwieriger zu analysieren.
Das Problem ist, dass uname nicht beweist, dass Unix ausgeführt wird. Es gibt nur einen Namen des Betriebssystems an, bei dem es sich möglicherweise nicht um ein Unix-System handelt. Linux zum Beispiel ist nicht Unix.
Rob
@Rob, nirgends haben Stéphane oder ich das gesagt; Tatsächlich unterscheiden wir explizit zwischen Linux und Unix (oder besser Mac OS X).
Stephen Kitt
3
Sofern Sie nichts anderes installiert haben, wird auf Macs kein Linux ausgeführt. Auf Macbooks wird das Apple-Betriebssystem OSX ausgeführt, das als Unix zertifiziert ist und daher die Antwort auf Ihre Frage darstellt.
Natürlich sind einige Linux-Versionen auch Unix-zertifiziert, daher stellt sich die Frage, ob Linux oder Unix ausgeführt wird.
Jörg W Mittag
@ JörgWMittag Ich sehe, dass die einzige Linux-Version, die als Unix zertifiziert ist, ein LDAP-Server ist, auf dem SUSE von IBM ausgeführt wird, aber keine anderen sind oder waren oder werden es wahrscheinlich jemals sein. Meine Antwort bleibt jedoch dieselbe. Wenn er Linux nicht auf einem Mac installiert hat, läuft OSX, Unix.
Öffnen Sie ein Terminalfenster und geben Sie 'uname -a' ein. Kehren Sie dann zurück.
Baazigar
1
Was kann ich über das Betriebssystem ableiten, wenn cat /proc/versiondie Fehlermeldung angezeigt wird cat: /proc/version: No such file or directory?
Kasperd
Schauen Sie sich / etc / fstab an, sehen Sie sich die dort angegebenen Dateitypen an. Wenn es wie ext3, ext4, xfs ist, ist es Linux. Wenn es wie jfs, gpfs, hfs, hfs + ist, ist das Unix.
Baazigar
Wenn Sie sehen xfs, könnte es IRIX sein ;-). (Aber nicht auf einem Mac, das gebe ich dir!)
Antworten:
POSIX definiert
uname
("Unix-Name"), um Informationen über das Betriebssystem und die Hardwareplattform bereitzustellen. runninguname
gibt den Namen der Implementierung des Betriebssystems (oder gemäß dercoreutils
Dokumentation den Kernel) an. Sie können dies interaktiv in einem Terminal tun oder die Ausgabe in einem Skript verwenden.uname
Wird auf Linux-Systemen gedrucktLinux
.uname
Wird auf Mac OS X-Systemen gedrucktDarwin
. (Genau genommen wird dies von jedem Betriebssystem mit einem Darwin-Kernel erzeugt, aber in diesem Fall ist es sehr unwahrscheinlich, dass Sie auf etwas anderes als Mac OS X stoßen.)Auf diese Weise können Sie feststellen, welcher Mac ausgeführt wird. Wie Rob betont, führen Sie unter Mac OS X (
Darwin
wie durch angegebenuname
) eine zertifizierte Version von Unix aus . Wenn Sie Linux verwenden, sind Sie es nicht.Auf einem Mac gibt es viele andere Möglichkeiten; Ihr Skript könnte unter Solaris (
uname
wirdSunOS
dann gedruckt ), unter FreeBSD (FreeBSD
), unter Windows mit Cygwin (CYGWIN
), MSYS oder MSYS2 (MSYS
), einer MinGW- oder MinGW-w64-Shell (MINGW64
,MINGW32
), Interix (Interix
) und wahrscheinlich unter anderen ausgeführt werden Ich bin mir nicht bewusst.uname -a
druckt alle verfügbaren Informationen aus, wie von bestimmtuname
, aber es ist schwieriger zu analysieren.quelle
Sofern Sie nichts anderes installiert haben, wird auf Macs kein Linux ausgeführt. Auf Macbooks wird das Apple-Betriebssystem OSX ausgeführt, das als Unix zertifiziert ist und daher die Antwort auf Ihre Frage darstellt.
quelle
Die Antwort ist:
Oder:
quelle
cat /proc/version
die Fehlermeldung angezeigt wirdcat: /proc/version: No such file or directory
?xfs
, könnte es IRIX sein ;-). (Aber nicht auf einem Mac, das gebe ich dir!)