luish¶
🐚 A fast, modern shell for Linux, written in Rust.
luish can replace zsh or bash as your interactive shell, and dash or bash as the shell that runs scripts: as fast as dash, with tab completion, history, line editing, globbing, and a modern plugin architecture.
Install it in one line (Linux on x86_64 or aarch64):
curl -fsSL https://raw.githubusercontent.com/luispedro/luish/main/install.sh | sh
faster than bash and zsh on scripts, and as fast as dash
to start an interactive shell, even with nvm or conda set up
commands with Tab completion, with the standard plugins and luish-extra
Highlights¶
Plugins package configuration and shell files, and can include an extension written in Rhai, a small embedded language, for hooks, prompt variables, Tab completion and commands. They are fetched from GitHub or any git repository, and pinned to specific commits.
luish --ssh HOST runs your commands on HOST, but edits the command line on your own machine: typing, history and
the completion menu don’t wait for the network, however slow the connection. luish needn’t be installed on HOST, as it
copies itself there.
Scripts run as fast as under dash, while interactive use is meant to be as full-featured as zsh’s. What luish adds costs scripts nothing unless they use it.
Arrays and associative arrays, [[ ... ]], ${x/pattern/replacement}, typeset, zsh’s parameter flags and
pipefail work in scripts and interactively, without slowing down scripts that don’t use them.
luish caches the effect of your startup files, so a new shell starts in milliseconds even with conda, nvm and
the like, which can take seconds in other shells.
Set options, aliases and plugins in a TOML file, with options grouped in meaningful categories. A personal plugin on GitHub can carry your configuration to every machine you use.
⚙️ Configuration at a glance¶
~/.config/luish/config.toml sets options, aliases, and the plugins to enable:
[options.history]
file = "~/.histfile"
share = true
[alias]
ll = "ls -l"
[plugins.enabled]
std.completion = "*" # completion for common commands, and git
luish-extra adds completion for about 270 more commands, from bioinformatics, science, desktop and Python tools.
Plugins can also set options. You can have a personal plugin on GitHub that sets your favourite options, aliases, plugins, and functions, then enable it on every machine you use to keep your configuration in sync (see A personal plugin).
🚀 Getting started¶
Install luish (see Installation), and start it:
luish # an interactive shell
luish script.sh # run a script, as sh script.sh does
Getting started then sets up a first configuration, with the standard plugins, a few aliases and good options.