好吧,我需要從Lua腳本中確定系統的操作系統,但Lua本身沒有API,所以我使用os.getenv()和查詢環境變量。在Windows上檢查環境變量「OS」給我的系統的操作系統的名稱,但是有一些變量存在於Windows和大多數Unix的口味可以檢查?如何從Lua腳本中確定系統的操作系統?
16
A
回答
9
在Unix系統中,嘗試os.capture 'UNAME',其中os.capture定義如下:
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
這將有助於在Unix和Mac OSX上的所有口味。 如果失敗,您可能在Windows系統上?或者檢查os.getenv'HOME'。
1
Unix應該有$ HOME變量(而Windows沒有),所以你可以檢查它(在檢查OS變量爲空之後)。
4
我想如果你只是需要Windows/Unix檢測,你可以檢查文件系統是否存在/ etc或/ bin或/ boot目錄。此外,如果您需要知道哪個發行版,大多數Linux發行版都會在/ etc中顯示一些文件來顯示發行版和版本,但不幸的是,它們都以不同的名稱命名。
14
你可以試試package.config:sub(1,1)
。它返回路徑分隔符,在Windows上是'\\'
,在Unix上是'/'
...
4
當編譯lua時,根據編譯的操作系統的不同,它的配置稍有不同。
因此可以使用「包」模塊中設置的許多字符串來區分它編譯的系統。
例如,當lua加載以動態庫形式分發的基於C的模塊時,它必須知道這些庫所使用的擴展,這在每個OS上都是不同的。
因此,您可以使用類似下面的函數來確定操作系統。
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
相關問題
- 1. 操作系統VBS腳本
- 2. 確定.vimrc中的操作系統
- 3. 確定從32位操作系統或64位操作系統C/C++應用
- 4. 如何確定預處理器中的操作系統和操作系統版本?
- 5. 操作系統和操作系統如何更新自己?
- 6. 操作系統架構檢測腳本
- 7. jQuery - 檢測操作系統和操作系統版本
- 8. 操作系統中
- 9. 操作系統
- 10. 如何確定編譯rpm的操作系統版本?
- 11. 預定義爲iPhone操作系統和Mac操作系統
- 12. 如何是操作系統
- 13. 通過Silverlight確定操作系統
- 14. 無法確定操作系統
- 15. 確定操作系統是否爲Mac
- 16. 在Windows操作系統中的pathos軟件包操作系統
- 17. Android操作系統更新系統
- 18. 如何識別bash腳本中的哪個操作系統
- 19. 從Symbian操作系統
- 20. 如何確定Python腳本運行的操作系統是否類Unix?
- 21. 從Powershell確定操作系統版本,Linux和Windows
- 22. 如何從Request.UserAgent獲得操作系統?
- 23. 從操作系統路徑中的Python腳本使用函數
- 24. 從Jenkins的Groovy系統腳本中執行Git操作
- 25. 如何確定操作系統是否爲C中的POSIX?
- 26. Java中的操作系統
- 27. 操作系統中的fork()
- 28. 選擇從操作系統系列
- 29. 操作系統 - TLB
- 30. Linux操作系統
windows has = HOME =以及 – 2012-10-20 01:20:07
在我檢查過的每個Windows版本中,沒有HOME環境變量。嘗試從命令提示符執行「echo%HOME%」。 – 2012-10-21 08:09:31
Windows 7(v 6.1,build 7601)擁有HOME,您檢查了哪個操作系統版本? – 2012-10-21 08:15:30