The Perfect Shell
I’ve realised for a while now that all the shells that I’ve used have some drawback that really impacts my workflow and productivity.
After using a lot of shells, I’ve realised that there’s no shell that fits my requirements, and it makes me sad. :(
My requirements:
- Be popular enough to have support for completions and perhaps a few plugins
- Be actively maintained
- Have completions
- Look good! (24-bit color support and stuff like that)
- Vi mode
- Fast
- POSIX-compliant
As you can see, some of my requirements can be a little… Demanding.
This is why all the shells I use aren’t for me:
- Bash: It doesn’t look pretty. That’s it. I might actually go back to using bash…
- ZSH: It’s soooo slowwwww…. I had to install the p10k prompt to speed up the first prompt time, but since p10k is no longer maintained, ZSH is really slow. It gets a bit bloated and sluggish with all the plugins you need to add to it to look pretty and usable.
- Yash: The funny thing is, sometimes it’s too POSIX-compliant, to the point where bash scripts break when running them in yash. It also doesn’t have completions for a lot of applications, which is a deal-breaker for me.
- Powershell: It’s Powershell. Need I say more?
- NuShell: It’s not POSIX-compliant.
- Fish: This shell fits EVERY requirement, except for one big one. It isn’t POSIX-compliant, and it’s really annoying having to switch to another shell just to run bash/posix scripts.
- nsh: Fish but POSIX-compliant. However, it’s unmaintained and doesn’t have support for a lot of completions and plugins.
- ash: It’s wayyy to bare-bones for interactive use.
- dash: It’s not meant for interactive use, just for scripting.
So yeah, I’m probably just going to use either bash or fish as my interactive shell, as yash is just not for me. It was a nice shell, but I need my completions!