Remix.run Logo
chasil 7 hours ago

The POSIX commentary mentions the Korn shell ten times, including particular behavior of the 1988 ksh release. Bash is not mentioned.

It is easier to understand the POSIX standard with a ksh focus, particularly ksh88.

https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V...

gaigalas 7 hours ago | parent [-]

I particularly like ksh93. It's a virtual machine, which makes it super fast for a lot of scenarios.

The ksh family is my personal favorite, in particular mksh and ksh93. Both with excelent feature sets. I even made a platformer game that works on them https://github.com/alganet/tuish/blob/main/examples/game.sh (and zsh/bash/busybox too) to show how feature-complete they are.

Shell interpreters are such a broad subject, I could go all day talking about cool things that can be done with them.

I want to get people focusing less on the spec. It's for whoever implements interpreters, not people who write scripts. And there's a gap on that, which I'm trying to cover (with full ksh support, much more than you think).

chasil 6 hours ago | parent [-]

The big problem with ksh93 is that it is not maintained.

After David Korn retired, an attempt was made to bring out a new version which failed dramatically, and AT&T reverted to Korn's final release.

SmartOS uses ksh93 as root's shell.

gaigalas 5 hours ago | parent [-]

https://github.com/ksh93/ksh

Last commit was 11 hours ago, still maintained.

chasil 5 hours ago | parent [-]

This has some information on the 2020 failure, but it is not what I remember reading.

https://www.reddit.com/r/openbsd/comments/jvbj4s/a_new_appro...

There were core performance problems in the 2020 effort.

gaigalas 5 hours ago | parent [-]

ksh2020 is `v-` based, the repo I mentioned is an `u+` fork with backports from the failed attempt. Most notably, it doesn't change the build system.

It's what Debian and Fedora use, so AT&T doesn't matter anymore. Real-world upstream is the repo I linked, which is maintained. All the 2020 drama is now obsolete.