lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]

On 21 December 2015 at 19:01, Dirk Laurie <> wrote:
> I'm trying to write a dual-purpose program that executes via
> the shebang. It should be callable with parameters, in which
> case it does its thing and exits, or without, in which case it
> runs the same initialization code and drops down to the REPL.
> In order to achieve the second, the shebang line is
> #! /usr/local/bin/lua -i
> This part works perfectly.
> If there are parameters, one can terminate despite the -i by
> os.exit.
> But -i has the side effect of displaying the Lua welcome message,
> which I don't want in the case with parameters. The program should
> look like a system utility.
> I can think of two solutions:
> 1. Modify lua.c to have a `-q` option that suppresses the welcome
> message even when the REPL is about to be entered,
> 2. Work without `-i` and use debug.debug to provide the REPL.
> This is not very nice since debug.debug does not provide readline
> support, history etc.
> Am I missing a trick somewhere?

Why not just implement a REPL yourself?
It can be quite simple:

_PROMPT = "> "
while true do
    local code =
    local func, err = loadstring(code, "@stdin")
    if not func then
        func, err = loadstring("return " .. code, "@stdin")
    if func then
        print(select(2, pcall(func)))
        io.write(err, "\n")