diff --git a/src/main/resources/assets/opencomputers/lua/rom/bin/set.lua b/src/main/resources/assets/opencomputers/lua/rom/bin/set.lua index f77ae96b1..6ca2272b1 100644 --- a/src/main/resources/assets/opencomputers/lua/rom/bin/set.lua +++ b/src/main/resources/assets/opencomputers/lua/rom/bin/set.lua @@ -5,14 +5,19 @@ if #args < 1 then print(k..'='..v) end else - local count = 1 + local count = 0 for _, expr in ipairs(args) do local k, v = string.match(expr, "(.-)=(.*)") if v then os.setenv(k, v) else - os.setenv(tostring(count), k) + if count == 0 then + for i = 1, os.getenv('#') do + os.setenv(i, nil) + end + end count = count + 1 + os.setenv(count, expr) end end -end \ No newline at end of file +end diff --git a/src/main/resources/assets/opencomputers/lua/rom/boot/02_os.lua b/src/main/resources/assets/opencomputers/lua/rom/boot/02_os.lua index 96147a022..f458b6444 100644 --- a/src/main/resources/assets/opencomputers/lua/rom/boot/02_os.lua +++ b/src/main/resources/assets/opencomputers/lua/rom/boot/02_os.lua @@ -25,7 +25,9 @@ function os.exit(code) end function os.getenv(varname) - if varname ~= nil then + if varname == '#' then + return #env + elseif varname ~= nil then return env[varname] else return env @@ -33,9 +35,14 @@ function os.getenv(varname) end function os.setenv(varname, value) - checkArg(1, varname, "string") - env[varname] = value - return env[varname] + checkArg(1, varname, "string", "number") + local success, val = pcall(tostring, value) + if success then + env[varname] = val + return env[varname] + else + return nil, val + end end function os.remove(...)