Here, 'Unix' stands for any POSIX-like operating system such as Linux, Mac OS X, Solaris, etc.
package.config
is a string where the first 'character' is the directory separator; so package.config:sub(1,1)
is either a slash or a backslash. As a general rule, try to use this when building paths.
A big difference between the Windows and Unix builds is that the default package.path
is based on the location of the Windows executable, whereas on Unix it is based on /usr/local/share/lua/5.1
. It is therefore easier to do a local user install of Lua on Windows, but Lua respects the environment variables LUA_PATH
and LUA_CPATH
.
Lua depends more directly on the system's C runtime libraries than most scripting languages so you have to appreciate platform differences. Use the "rb" specifier with io.open
if you need compatibility with Windows binary I/O. Be careful of os.tmpname
because it does not return a full path on Windows (prefix with the value of the TMP
environment variable together with a backslash first.) os.clock
is implemented very differently
on Windows.
Likewise, os.time
can actually crash Lua if passed non-compatible format specifiers. (This is no longer a problem with Lua 5.2, which does sanity checks first.)
For Windows GUI subsystem, os.execute
can be irritating, and io.popen
simply won't work - cross-platform extension libraries are available in this case.