I've recently started using https://elv.sh/ as my primary terminal after testing it out on/off for 2yrs and slowly porting old ZSH aliases/scripts into the Elvish language (very similar to Go which it runs on), coming from a decade on ZSH. There's a lot of opportunity in this space.
ZSH with the full suite of packages with autosuggestions and various other plugins (which I've grown fully dependent on) can get very slow on initial terminal loads, even with tracing and optimization.
Smaller tools like ripgrep and exa both written in rust help speed up common terminal commands: https://github.com/ogham/exa
A terminal (or a terminal emulator) is not a shell and, moreover, a shell does not necessarily require a terminal.
Elvish is also a lightweight programming language like bash and zsh. Which is an underrated part of using shells (bash and zsh are quite awful even given the constraints of shell scripting and POSIX).
For anyone interested, here's a good article with some tips about working with/customizing elvish: https://zzamboni.org/post/my-elvish-configuration-with-comme...
I released a vim plugin in the meantime: https://github.com/dmix/elvish.vim
And zzamboni on github has some good starting dot-files which I forked initially. https://github.com/zzamboni/dot-elvish
Otherwise I’m interested in creating an oh-my-elvish type library in the future.
Now cicada shell is still have some issues, but overall it's quite usable. I hope it could be useful for people who are seeking simplicity and speed in daily use of the shell.
cicada> echo -e '#!/bin/sh\necho works' > /bin/1
cicada> chmod +x /bin/1
cicada> 1
1
bash> 1
works
cicada> touch a b; echo "$(echo "$(echo "$(ls)")")"
$(echo $(echo a
b
bash> echo "$(echo "$(echo "$(ls)")")"
a
bIt looks like a bad command to me (nested $ and nested `"` do not smell good). Probably I would mark this a wont-fix. But if I found I does make sense (useful in some meaningful places) - I'll consider to update cicada to align with Bash. Thanks for reporting.
Killer feature right there.
[1]: https://github.com/mitnk/cicada#math-arithmetic-directly-in-...
> Why another shell?
> Because we can. :)
It doesn't do anything exciting that I can tell.
This post would be more useful if it were titled as a 'learn how to write a shell in Rust'.
Yay! Non-portable Unix tools! Just what everyone wants.
I absolutely abhor this quote, I think it's taken out of context.
First of all, it denotes hubris, which I hate.
Secondly, it's totally anti-scientific, it assumes that Unix is some paragon of OS design, the zenith of Computer Science.
I like Unix as much as the next IT guy, but let's cut it out with the cliché quotes. There's plenty of things Unix doesn't do that well (everything is a file, until it isn't; filenames are basically binary blobs, etc.: https://dwheeler.com/essays/fixing-unix-linux-filenames.html).
Plus your comment is just silly, whoever implemented this obviously knew about Unix shells... It takes knowledge of Unix shells to implement another Unix-y shell.
And "non-portable" because it's only portable to Unix? That's... Approximately everything. Linux family and Darwin naively, NT via WSL/cygwin/etc., BSDs obviously, Android sorta-natively or via Termux, Chrome OS via Termux, crouton, or crostani(sp?). What is Unix not portable to?
Also they are claiming to be generally (but not strictly) POSIX-compatible.