Name des OS ?

rubricanis

Homo ludens
Ich möchte ein Lua script portabel halten und benötige deshalb den namen des OS. Unter DragonFly werden die env. variablen mit printenv angezeigt und sind in Lua mit os.getenv(OSTYPE) erreichbar.

Wir bekomme ich den OsNamen unter FreeBSD, OpenBSD, NetBSD und möglicherweise unter Linux, vorzugsweise mit getenv o.Ä. ?

Peter
 
Auf meinem FreeBSD System ist OSTYPE gesetzt. Ich vermute mal uname -o wäre portabel.
 
$OSTYPE gibt es auch unter FreeBSD (keine Ahnung ob es die überall gibt). Alternativ wäre natürlich auch der Aufruf `uname -s` möglich.
 
$OSTYPE gibt es auch unter FreeBSD (keine Ahnung ob es die überall gibt). Alternativ wäre natürlich auch der Aufruf `uname -s` möglich.
uname -s schreibt nur den namen aud std.out. Leider gibt unter Lua (ohne C zu verwenden) ein Aufruf von os.execute nur zurück ob ein Fehler aufgetreten ist oder nicht. Ansonsten würde es sich noch anbieten uname -s in eine temporäre Datei umzuleiten und auszulesen. Aber das wäre ein wenig zu viel des guten...

Danke!
 
Oder du schreibst die Ausgabe von uname in eine env-variable und liest die aus.
 
Oder du schreibst die Ausgabe von uname in eine env-variable und liest die aus.
Hmmm, raffiniert! Es ist mir nicht ganz klar wie das laufen kann. In Lua gibt es keine os.setenv(xxx), also muss ein kleiner hack her. Ich kann jeden Befehl mit os.execute aufrufen. Das müßten dann wohl in etwa so aussehen:
Code:
local OS = os.getenv("OSTYPE")
if not OS then
  local r = os.execute("env OSTYPE=nil ")
  r = os.execute("uname -s > ???  ")
  OS = os.getenv("OSTYPE")
end
Wie bekomme ich das jetzt in die env variable OSTYPE hinein (???) ?

Peter
 
Auf meinem FreeBSD System ist OSTYPE gesetzt. Ich vermute mal uname -o wäre portabel.
Unter OpenBSD geht das nicht. Ich würde allgemein einfach nur "uname" versuchen und dann geziehlt nach "FreeBSD", "OpenBSD", "Linux" und "Darwin" (MAC) suchen. Alles andere "unknown".

Gruss
 
Ich denke dass wird alles zu kompliziert. Es ist wohl besser abzubrechen und den user aufzufordern OSTYPE zu setzen wenn OSTYPE nichts ergibt.

Danke !

Peter
 
Back
Top