I had the same issue/question awhile back...
After a bit of digging, I installed mksh which "links/hides" itself as ksh:
$ which ksh
/usr/bin/ksh
$ ls -lrt /usr/bin/ksh
lrwxrwxrwx 1 LP-VGERSHKO-W7+vg_local LP-VGERSHKO-W7+None 8 Apr 19 2018 /usr/bin/ksh -> mksh.exe
man mksh yields:
MKSH(1) BSD General Commands Manual MKSH(1)
NAME
mksh, sh - MirBSD Korn shell
SYNOPSIS
mksh [-+abCefhiklmnprUuvXx] [-T [!]tty | -] [-+o option] [-c string | -s
| file [argument ...]]
builtin-name [argument ...]
DESCRIPTION
mksh is a command interpreter intended for both interactive and shell
script use. Its command language is a superset of the sh(C) shell lan�
guage and largely compatible to the original Korn shell. At times, this
manual page may give scripting advice; while it sometimes does take por�
table shell scripting or various standards into account all information
is first and foremost presented with mksh in mind and should be taken as
such.
I don't quite remember if mksh was a separate Cygwin package or not...