This #Linux, #Unix, #macOS, #FreeBSD shell feature comparison table shows that ZSH and FISH have the most features. Why aren't you using ZSH or FISH yet?
@nixCraft Jokes on you, I have fish as a default shell
@nixCraft Because I am too lazy to port my bash dotfiles over.

@nixCraft Because I have decades of ingrained programming habits tied to Bash? Mind you, I also already have to remember programming quirks for Busybox Ash, and Jenkins Dash. :-(

Zsh is interesting, were I coming in "cold", or doing another forced pivot like I did from Csh back 25 years ago… I'd likely adopt it.

@nixCraft Bloat is my least favoured feature

@nixCraft

Oh my #zsh 💚
Lazyness is the mother of all progress.

@nixCraft Because I'm fairly fluent in Bash at this point (at least the subset of features that I use), and for anything Bash can't do Python is far more portable?

@nixCraft ZSH has compatibility mode with sh, but it disabled by default, you can enable it with:

emulate shAlso, I'm using ZSH btw

@nixCraft Apple forced me into it and I’m okay with that 🤓
@nixCraft don't we need Bourne compatibility to use BASH? what am i missing here?

@nixCraft Because it is not the standard across the zillion of servers i manage.

It is a good alternative if you work mainly in one host or in a few.

@nixCraft mostly because I don't care...?
@nixCraft I'm using the default most of the time and I don't bother changing it. (bash, oksh)
@nixCraft Tried using fish but muscle memory for bash proved just too strong.
@nixCraft
If you are using a Prompt and you need floating point support, you are doing something no right 
@nixCraft I use Zsh, but Bash is just more common. Plus, using Zsh puts you down a rabbit hole of plugins that's frankly really annoying and messy

@nixCraft Because I simply do not need to.

The few features zsh/fish offer over bash are not enough for me to switch.

@nixCraft As a sysadmin, I had been interacting with all sorts of systems and bash/sh are a must. So there is no reason for me to put any effort into migrating.
@nixCraft because my developers are expecting bash when they log into the redhat servers

@nixCraft

- zsh (with oh-my) as the interactive shell on my own boxes
- bash for scripting to be portable
- whatever I find on the other boxes I work on, mainly ash and bash

@nixCraft if find source guardian shell scripts for both bash and zsh exceptionally hard (SO answers do not work) so Iist come around with helper arguments so I can test with BATS xor run my scripts
@nixCraft that's a really cool chart. The only reason I haven't moved from bash is sheer inertia. I keep meaning to...
Nushell

A new type of shell.

@nixCraft Because I need compatibility and not features.

@nixCraft wait, no subshells in fish?

fish people, do you ever miss it / feel the need for it?

@josh @nixCraft no, I never even knew this in the last 10 years that I used the fish for my personal machines.
@nixCraft Because features aren't equal. bourne shell and subshell compatibility are essential, many autocorrections are actually a bug rather than a feature and still other rows in your graphic leave me with "meh" as their importance.
@nixCraft zsh isn't bourne shell compatible?
@nixCraft because they are not Bourne?
@nixCraft because https://oilshell.org is going to take over soon 😛
Oils 2016-2024

@nixCraft Not all "command name completion" is created equal... After using fish and powershell on my work computer and getting used to a >50% hit rate when just typing five letters and pressing ➡️, bash starts to feel a bit clumsy. Would be interesting to see a powershell column in here, too—as much as we hate MS, it *is* open source and cross platform.
@nixCraft Another interesting one I saw a video on once was xonsh. Basically a cross of bash and python that somehow works.
@nixCraft because they aren’t korn shell compatible. Yes, I’m that old

@nixCraft
I tried out fish and rejected it. For scripts, note line 1 of the table. For interactive sessions, what i remember offhand:

a) tab completion on options wipes out half the screen when invoked. Hey I was *using* my history before fish got in the way. It weighs against the nice benefit of extracting argument hints from the man pages.

b) tab completion defaults to files instead of options.

c) the colour coding mechanism might have potential, but DEFAULTS MATTER. Dark blue on black???

@nixCraft
without that chart, because i have not tested. with that chart, because it doesn't make sense. fish doesn't support subshells (which i use), both are not bourne compatible. zsh may be an option due to syntax highlighting but i even find myself using oksh recently because it is way more responsive than bash.
@nixCraft I am using zsh. I use it with oh my zsh to get custom themes.
@nixCraft Two really handy tools I've found, which are both dialect agnostic are:
1) shellcheck https://www.shellcheck.net/
2) https://shellspec.info/
I'm finding it hard enough learning shell scripting without all the competing variants, so have simply settled on bash.
I looked at zsh briefly, but it struck me as some Apple-centric "expand and embrace" of bash, so stuck with bash.
ShellCheck – shell script analysis tool

ShellCheck finds bugs in your shell scripts

@nixCraft I’m still using ksh93.
For the same reason I use a Mac and not Windows.
More “features” (bloatware) does not mean better experience.

@nixCraft I use Zsh, for its simplicity, diverse plugin ecosystem and bash compatibility.

I don’t use any frameworks like ohmyzsh or zap whereas I have configured it to a point where my profile is my own framework which is perfectly fine for my usage.

With that said I really wish bash has features similar to Zsh and I could switch back to bash at one point in future.

@nixCraft 1. Litteracy among coworkers: most of the group knows some level of bash, so that settles it for scripts.

2. Right tool for the job: the moment I need syntax highlighting or floats, is the moment I will need to shift to a more advanced env anyway, so the extra features of zsh and fish aren't that attractive. bash's native regex support is probably as far as I'll go before switch to Perl/Python/etc.
But that is obviously dependent on one's typical usecase.

@dryak (it's a bit like the fact than in theory you can do quite a lot of data processing by piping together a long string of standard tools, but in practice I am more likely to solve it with gawk 1 liner).
@nixCraft It already came with Bash lol

@nixCraft does sh respond to the 'history' command?

(As it does in, say, tcsh in FreeBSD.)

@nixCraft the table appears to be Linux-specific; not encompassing FreeBSD.
@nixCraft "Never change a running system" 🤪 honestly never had the need for the things that Zsh can do on top of Bash, so no need to switch
@nixCraft features are for the weak-willed