Ok Necesito determinar el sistema operativo del sistema desde un script Lua, pero Lua como tal no tiene API para esto, así que uso os.getenv() y variables de entorno de consulta. En Windows, verificando la variable ambiental "OS" me da el nombre del sistema operativo del sistema, pero ¿hay alguna variable que exista tanto en Windows como en la mayoría de los sabores de Unix que se pueda verificar?¿Cómo puedo determinar el sistema operativo del sistema desde un script Lua?
Respuesta
En un sistema Unix, intente os.capture 'uname' donde os.capture se define a continuación:
function os.capture(cmd, raw) local f = assert(io.popen(cmd, 'r')) local s = assert(f:read('*a')) f:close() if raw then return s end s = string.gsub(s, '^%s+', '') s = string.gsub(s, '%s+$', '') s = string.gsub(s, '[\n\r]+', ' ') return s end
Esto ayudará en todas las versiones de Unix y en Mac OSX. Si falla, ¿podría estar en un sistema Windows? O consulte os.getenv 'HOME'.
Unixes debe tener la variable $ HOME (mientras que Windows no tiene eso), por lo que puede verificarlo (después de comprobar que la variable del sistema operativo está vacía).
Supongo que si solo necesita la detección de Windows/Unix, puede verificar la existencia de directorios/etc o/bin o/boot en el sistema de archivos. Además, si necesita saber qué distribución es, la mayoría de las distribuciones de Linux tienen un pequeño archivo en/etc que muestra la distribución y la versión, lamentablemente todos lo nombran de manera diferente.
Detectando carpetas como '/ Applications' para MAC OS,'/home' (después de probar MAC OS) para GNU/Linux y finalmente 'C:/Windows' y' C:/WINNT' es una buena solución para mí. –
Puede intentar package.config:sub(1,1)
. Devuelve el separador de ruta, que es '\\'
en Windows y '/'
en Unixes ...
esta es una respuesta simple e inteligente – tcpiper
solo para respaldar esto: [referencia de Lua 5.3] (http://www.lua.org/manual/5.3/manual.html#pdf-package.config) –
Cuando se compila lua, se configura ligeramente diferente según el sistema operativo para el que se compila.
Muchas de las cadenas que se configuran en el módulo 'paquete' se pueden usar para distinguir para qué sistema se compiló.
Por ejemplo, cuando lua carga módulos basados en C que se distribuyen como bibliotecas dinámicas, debe conocer la extensión utilizada para esas bibliotecas, que es diferente en cada sistema operativo.
Por lo tanto, puede usar una función como la siguiente para determinar el sistema operativo.
local BinaryFormat = package.cpath:match("%p[\\|/]?%p(%a+)")
if BinaryFormat == "dll" then
function os.name()
return "Windows"
end
elseif BinaryFormat == "so" then
function os.name()
return "Linux"
end
elseif BinaryFormat == "dylib" then
function os.name()
return "MacOS"
end
end
BinaryFormat = nil
Lo siento por publicar esto de esa manera, no estoy acostumbrado a acumular desbordamiento. –
No es del todo confiable en todos los casos. Tengo un programa C que incorpora el intérprete lua y el código lua devuelve Linux como el BinaryFormat en OSX. – Matt
Tengo el mismo problema en OSX –
- 1. Cómo determinar el sistema operativo
- 2. Cómo determinar el sistema operativo en elisp?
- 3. Cómo determinar la plataforma del sistema operativo con WMI?
- 4. Llamadas al sistema operativo desde el script bash
- 5. ¿Podemos ejecutar el comando del sistema operativo desde sqlite3
- 6. ¿Cómo puedo detectar el sistema operativo en Perl?
- 7. ¿Cómo puedo reemplazar el calendario predeterminado del sistema operativo Android?
- 8. Detectar el sistema operativo
- 9. ¿Cómo iniciar el script de PowerShell desde la línea de comando del sistema operativo?
- 10. Detectar la versión exacta del sistema operativo desde el navegador
- 11. ¿Cómo puedo determinar el sistema operativo y el nombre de host utilizando el ceceo común?
- 12. Desarrollo de un sistema operativo
- 13. ¿Cómo puedo cambiar las unidades usando el sistema operativo python?
- 14. ¿Cómo copiar un archivo desde VirtualBox al sistema operativo host?
- 15. jQuery - detectando el sistema operativo y la versión del sistema operativo
- 16. malloc en un sistema integrado sin un sistema operativo
- 17. Tiempo de compilación del sistema operativo
- 18. Requisitos del sistema operativo para arc4random_uniform()
- 19. ¿Cómo detectar el sistema operativo en ejecución?
- 20. Actualizar sistema operativo Android programáticamente
- 21. Pregunta de arranque del sistema operativo básico
- 22. ¿Cómo puedo encontrar el sistema operativo actual en Python?
- 23. ¿Dónde puedo encontrar la primera versión del sistema operativo Linux?
- 24. El sistema operativo está eliminando el hilo
- 25. ¿Cómo funciona exactamente el núcleo de protección del sistema operativo
- 26. ¿Cómo se implementa sleep en el nivel del sistema operativo?
- 27. ¿Cómo detectar el idioma predeterminado del sistema operativo en python?
- 28. ¿Cómo obtener el número de versión del sistema operativo?
- 29. ¿Cómo interactúa un programa compilado con el sistema operativo?
- 30. Cómo determinar los requisitos mínimos del sistema
Windows ha INICIO = =, así –
En cada versión de Windows que he comprobado, no hay ninguna variable de entorno HOME. Intenta hacer "echo% HOME%" desde el símbolo del sistema. –
Windows 7 (v 6.1, compilación 7601) tiene HOME, ¿qué versión de sistema operativo revisó? –