Why do all shells suck?

I'm at the point where I want to make my own. And I'm not talking about interpretive shells (dash is very good for that) but instead interactive. A good shell needs to have built-in:
-POSIX compliance
-Syntax highlighting
-Tab completion for all commands that support it
-PS1 var customization
-Aliases
-Vi(m) bindings
and it needs to be fast, so written in C. For a while I was using zsh, but to get any actually good features, you have to use plugins and all this other nonsense. The closest thing I found was nsh, but it's written in Rust, you can't change PS1, and you can't use basic things like !! for "previous command." Same exact problem with Fish except even more things are missing. How would I go about writing my own shell? I only would need it for interactive use. Should I fork another shell with good features built-in like Zsh and try to manually incorporate what I want at a source level? Because these Zsh plugins just aren't doing it for me anymore. Everything is just too slow.

Attached: 7whz+0BP8BO73DUxR4AwsAAAAASUVORK5CYII=.png (209x241, 3.19K)

Why does a shell need syntax highlighting?
I'm very uncomfortable with the idea of my interactive shell messing with the output of my programs, I would never know which parts are my shell meddling and which came from the program itself.

Aside from that. why can't you use dash?
It supports everything else you listed.

>Why do all shells suck?
they don't
>-POSIX compliance
bash and sh are both fully posix compliant
>-Syntax highlighting
bash and sh have syntax highlighting with any editor
>-Tab completion for all commands that support it
bash and sh both have this
>-PS1 var customization
bash and sh both have this
>-Aliases
bash and sh both have this
>-Vi(m) bindings
bash and sh both have this

you literally have not looked into anything. you have done your homework. everything you complain about is possible, you're an idiot

>The closest thing I found was nsh, but it's written in Rust
Rewrite it into C...?

I meant bash.

>Should I fork another shell with good features built-in like Zsh and try to manually incorporate what I want at a source level?
ZSH has over 100,000 lines of code. You would be better off writing your own from scratch.
Also my ZSH with syntax highlighting and full tab completion starts in 10ms.
The syntax highlighting is for what the user types into an interactive shell, not it's output.

>bash and sh
sh is not a shell

>bash
>fully posix compliant
nigger what
this is true too. on most linux systems sh is dash or bash (which may or may not be invoked in posix mode).

Should have been more clear. I meant while typing the actual command, not the outpur. E.g. the first word highlighted green if the command exists and red if not, etc.

>Why do all shells suck?
>-POSIX compliance
You answered your own question. You make something that doesn't suck if you have to be compatible with something that sucks.

Sounds like you just want zsh bundled with some riced default config?

>sh is not a shell
>posix shell is not a shell
retard

You've had a shell hide output because of syntax highlighting? When would this ever be relevant?

Syntax highlighting improve readability, but I've seen nutjobs not use it -- maybe my reliance on syntax highlighting is just habit.

I've migrated to pwsh on every platform I can and have even considered porting dotnet to the ones that it currently doesn't support to bring it over there.
Never going back.

just use bash and stick with POSIX. like a sane person. if you want your highlighting there are plenty of terminals that support it. like a lot of modern linux servers do by default

>>posix shell is not a shell
>retard
"POSIX shell" literally isn't a shell itself you bumbling retard; there are multiple shells that fit the standard of being a POSIX shell, and even then not all "sh" shells are POSIX shells.

>these Zsh plugins just aren't doing it for me anymore. Everything is just too slow.
Have you checked if it may be a single specific thing slowing down your shell? Often it's a synchronous git prompt.

>"POSIX shell" literally isn't a shell itself
KEK

show me the POSIX shell you retard

Type sh and see what happens faggot

there is no git repo for "posix shell," it's a specification in the posix standard that at least one shell on a system has to meet. probably the closest actual project to being the "one true sh" is ash but most linuxes just say fuck posix and use bash while bsds will use csh or ksh literally just renamed to "sh" to conform.

I think they are referring to sh, the Bourne Shell, and confusing it with /bin/sh

/bin/sh, there you go friend

>sh is the POSIX shell
>doesn't know what his sh actually is
bumbling retard nigger confirmed

/bin/sh is a symbolic link to a POSIX-compliant shell. Nothing ships with the Bourne sh anymore. Most link to dash or POSIX bash.

That sounds like a pain. I only know a small amount of, so rewriting it when I know 0 Rust sounds like a bad idea.

writing a modern shell in C is retarded, a shell mainly needs to process text and handle jobs. you don't need C to do that efficiently
something like haskell or ocaml seems like a good fit here actually