Remix.run Logo
chasil 7 hours ago

The author has neglected the pdksh family of shells which includes all of Android, so this is a sizable oversight.

This would include the MirBSD mksh, and oksh from OpenBSD.

They are much smaller than ksh93 and bash, and I would suggest that their syntax extensions be given preference, as they originally represented ksh88 (from which the POSIX shell standard was derived).

gaigalas 7 hours ago | parent [-]

These are all in the shell-versions toolkit I recommended.

    docker run -it --rm alganet/shell-versions:all /opt/mksh_R59c/bin/mksh -c 'echo $KSH_VERSION'
    docker run -it --rm alganet/shell-versions:all /opt/oksh_7.9/bin/oksh -c 'echo $KSH_VERSION'
    docker run -it --rm alganet/shell-versions:all /opt/loksh_7.9/bin/loksh -c 'echo $KSH_VERSION'
I omitted them from the post because this is not about the history of ksh and the pdksh codebase.
chasil 7 hours ago | parent [-]

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.