uname ist sowohl eine Systemfunktion (uname()
) als auch ein Systemprogramm (/usr/bin/uname
) in UNIX und UNIX-ähnlichen Betriebssystemen. Funktion und Programm liefern den Namen und weitere Informationen über das Betriebssystem. Vorhandensein und Verhalten sowohl der Funktion als auch des Programms, nebst dessen Optionen, sind in POSIX normiert.[1][2]
Die Funktion liefert die Informationen als struct
, deren Form in sys/utsname.h
festgelegt wird, zurück.[1]
Das Kommando gibt die Informationen auf stdout
aus. Sowohl für die Funktion wie für das Kommando sind Form und Inhalt der Ausgabe nicht normiert.[2]
Funktion und Programm wurden erstmals in PWB/UNIX implementiert. Einige Unix-Varianten, zum Beispiel AT&T UNIX System V Release 3.0, enthalten zusätzlich das Programm setname
, mit dem die Werte, die uname
zurückliefert, geändert werden können.
In den Manpages der Systeme FreeBSD,[3] OpenBSD,[4] NetBSD[5] wird die POSIX-Konformität ihrer Implementierung des Programms uname
behauptet.
Die Manual Documents der GNU-Implementierung des Programms weisen nicht explizit eine POSIX-Konformität aus, stellen aber für die Option -s
fest, dass der Kernelname statt des Betriebssystemnamens als Inhalt ausgegeben wird. Den Begriff Kernel kennt die POSIX-Spezifikation nicht, allerdings widerspricht dieses Verhalten – wie eingangs beschrieben – ihr auch nicht ausdrücklich.
Auf einem System mit Darwin könnte die Ausgabe des Befehls uname
mit der Option -a
(setze alle verfügbaren Optionen) so aussehen:
Darwin hostname 9.2.0 Darwin Kernel Version 9.2.0: Tue Feb 5 16:13:22 PST 2008; root:xnu-1228.3.13~1/RELEASE_I386 i386
Unter macOS kann zusätzlich der Befehl sw_vers
verwendet werden, um Informationen über das System auszugeben.
In MS-DOS und seinen Abkömmlingen (etwa Windows) wird das Kommando ver
zur Versionsabfrage benutzt. In VMS bzw. OpenVMS kann F$GETSYI
bei entsprechender Parametrierung ähnliche Informationen über das laufende System liefern. Unter AmigaOS kompatiblen Systemen ist es version
.