I've been working on wisp, a Linux shell that uses Lua 5.4 for scripting and config instead of inventing another shell grammar.
The core idea is simple: any global function you define in ~/.config/wisp/init.lua becomes a shell command. No alias syntax, no config DSL -- just Lua.
function ll(input)
return sh("ls -la")
end
function g(input, pattern)
return sh("grep " .. pattern)
end
Then use them like any command: wisp> ll | g "wisp"
Why Lua?
Every shell invents its own scripting language. Bash has its own grammar, fish has its own, zsh has its own. They all have different syntax for aliases, functions, conditionals, and loops.
Lua is already a real programming language with closures, tables, loops, and a standard library. It's the most embedded scripting language on the planet. Why invent another one?
Structured Pipeline Data
The other thing that's different: native pipeline stages (user-defined functions and builtins) pass Lua tables between each other in-process. No fork, no serialization.
function nums(input)
return { {n = 3}, {n = 1}, {n = 2} }
end
function sorted(input)
table.sort(input, function(a, b) return a.n < b.n end)
return input
end
wisp> nums | sorted passes the table directly from nums to sorted without forking or text parsing. Only when a pipeline hits an external command (grep, wc, anything on $PATH) does wisp fork and serialize to bytes.
What's in v2
- Full job control: fg, bg, kill, disown, wait
- Globbing, brace expansion
- ${VAR:-default} expansion
- 2>&1 redirect
- Tab completion for commands, filenames, Lua functions
- Levenshtein command-not-found suggestions
- Script mode:
./wisp -f script.luaor#!/usr/bin/env wisp - Builtins: cd, exit, export, command, jobs, fg, bg, kill, disown, wait, echo, source, pwd, type
Stats
- Binary: 195K (stripped: 168K)
- Source: ~2,300 lines C++17
- Dependencies: Lua 5.4, vendored linenoise
- Startup: 1.5ms
What it can't do (yet)
No array syntax, no [[ ]] tests, no ${!prefix*} expansions. Not a bash replacement for scripts -- focused on interactive use.
GitHub: https://github.com/Hinikaa/wisp













