我的意思是当lua运行时不是嵌入在另一个应用程序中而是作为独立的脚本语言。
我需要python中的PHP_BINARY
或sys.executable
。这可能与LUA有关吗?
答案 0 :(得分:4)
试试arg[-1]
。但请注意,当Lua以交互方式执行时,arg
未定义。
答案 1 :(得分:4)
请注意,lhf给出的解决方案并不是最常见的。如果使用其他命令行参数调用解释器(如果这可能是您的情况),则必须搜索arg
。
通常,解释器名称存储在为arg
定义的最负的整数索引处。请参阅此测试脚本:
local i_min = 0
while arg[ i_min ] do i_min = i_min - 1 end
i_min = i_min + 1 -- so that i_min is the lowest int index for which arg is not nil
for i = i_min, #arg do
print( string.format( "arg[%d] = %s", i, arg[ i ] ) )
end
答案 2 :(得分:0)
如果包含Lua解释器的目录位于PATH环境变量中,并且您通过其文件名调用了Lua解释器:
lua myprog.lua
然后arg[-1]
包含" lua",而不是Lua解释器的绝对路径。
以下Lua程序适用于z / OS UNIX:
-- Print the path of the Lua interpreter running this program
posix = require("posix")
stringx = require("pl.stringx")
-- Returns output from system command, trimmed
function system(cmd)
local f = assert(io.popen(cmd, "r"))
local s = assert(f:read("*a"))
f:close()
return stringx.strip(s)
end
-- Get process ID of current process
-- (the Lua interpreter running this Lua program)
local pid = posix.getpid("pid")
-- Get the "command" (path) of the executable program for this process
local path = system("ps -o comm= -p " .. pid)
-- Is the path a symlink?
local symlink = posix.readlink(path)
if symlink then
print("Path (a symlink): " .. path)
print("Symlink refers to: " .. symlink)
else
print("Path (actual file, not a symlink): " .. path)
end
或者,在具有proc文件系统的UNIX操作系统上,您可以使用readlink("/proc/self/exe")
来获取路径。