Bourne | Ash |  #!  | find | ARG_MAX | Shells | whatshell | portability | permissions | UUOC | ancient | - | ../Various | HOME
"$@" | echo/printf | set -e | test | tty defs | tty chars | $() vs ) | IFS | using siginfo | nanosleep | line charset | locale

Some ksh versions available

2016-09-08 (see recent changes)

Keep in mind that a vendor might have added further modifications to a release.


Version 11/16/88 Ultrix 4.0, 4.5 In fact it seems to be the very first 88 release:
  • still dumps core upon "$(name=value)"
  • "unused" $! still expands to "0" instead of ""
Version M-11/16/88 HP-UX 8-11 It prints a plain 88, but in fact is a 88c:
  • doesn't dump core anymore while in read with stderr redirected
    and in emacs mode when receiving a signal that has a trap set
    (this got fixed with 88c)
it's missing fixes from ksh88-d:
  • "a=1 set" should behave like "set" but prints nothing.
  • "for i in a b; do echo ${i[@]};done" still yields the error "ksh: i: subscript out of range"
Version 11/16/88d SVR4.0 v2.1
EP/IX 2.2.1AA
AIX 3.2
Version M-11/16/88d AIX 3.2 /usr/mbin/ksh
Version M-11/16/88e IRIX 4.0.5
Version 11/16/88e Unicos ksh88e introduced three features, which are not documented in the release file
  • negation of a command/pipeline with !, for example: "if ! grep [...]"
    Exception: not available in a post-installed ksh88-g I once found on a later SunOS 4.
  • /dev/(tcp|udp)/{host-IP}/{port}, usable in redirections.
    Exception: this is not compiled into the HP-UX ksh88-f, and the code depends on the
    cpp macro SOCKET which is defined in include/sh_config.h.
  • a fallthrough mechanism in case. The following prints both 2 and *
        case 2 in
        1) echo 1  ;&
        2) echo 2  ;&
        *) echo \* ;&
Version M-11/16/88f-beta4    IRIX 5.3-6.3
Version 11/16/88f IRIX 6.3+
Version M-11/16/88f OSF1/V4+
AIX 4.3.*, AIX 5.1-3
HP-UX 10,11 /usr/bin/sh

In the HP-UX 11 /bin/sh the undocumented flag "Q" disables reading of $ENV at startup.
Version 11/16/88g OpenServer 5.0.6
AUSPEX (SunOS 4) 4.1.4
Version M-11/16/88h UnixWare 2.1, OpenUnix 8.0
Version 11/16/88i SunOS 5.1-5.5.1
Version M-11/16/88i SunOS 5.6+

See also ksh88 bugfixes ("RELEASEa" in the ksh88 package) for modifications up to ksh88i (local copy)


All releases expand ${.sh.version}.

Version M-12/28/93 OSF1/V4 ff.
AIX 4.3.2 (initial ksh93 release)
Version M-12/28/93d SunOS 5.5.1+
HP-UX 10.20+
UnixWare 7.1.4 /usr/dt/bin/dtksh
Version M-12/28/93e-SCO UnixWare 2.1/7.1.4, OpenUnix 8.0
Version M-12/28/93e AIX 5.1-3
At some time before release 93k+, the date format changes, from 12/28/93 to 1993-12-28.
And a + sign means another release with small fixes. Example: Version 1993-12-28 k+
M 1993-12-28 n AIX 5.3 (optional)
Version M 1993-12-18 s MacOS X 10.6.3
UWIN 4.2 2007-12-11
Version M 93t 2008-11-04 SunOS 5.11 /
    OpenSolaris 2009.06 (x86)
With 93s+, the version format changed again:
now the actual release date is contained, from "1993-12-28 s+" to "93s+ 2008-01-31".
And different dates for the same letter are possible.
The + sign is still used. Examples: "93t+ 2009-05-01", "93t+ 2010-03-05"

Since release 93t, KSH_VERSION is a name reference to .sh.version.
And in an arithmetic expression, these variables result in a number which increases each release,
example: $ echo ${.sh.version} , $(( .sh.version ))
-> Version JMP 93t+ 2010-03-05 , 20100305

After "Version" now there is a concatenation of letters indicating compile time options:

    A  SHOPT_AUDIT	/* keyboard logging */
    B  SHOPT_BASH	/* bash compatibility code */
    L  SHOPT_ACCT	/* accounting */
    M  SHOPT_MULTIBYTE	/* multibyte character handling */
Version JM 93t+ 2010-05-24     UWIN 4.3a 2008-11-15 New shell option since 93t+:
    J  SHOPT_BGX	/* background job extensions */
New or renamed shell options since 93u:
    j  SHOPT_BGX
    J  SHOPT_COSHELL	/* job pools */
    P  SHOPT_PFSH	/* solaris exec_attr(4) profile execution */

For details about the changes see the link "notes and changes" on the kornshell homepage
(local snapshot of "RELEASE", the changelog in the ksh93 package).
The differences between ksh88 and ksh93 are shown in RELEASE88 in the ksh93 package.


02/21/85 ? the file RELEASE in ksh86a refers to this version
Version 06/03/86a           was it ever distributed with systems (by any vendor) or only available directly from AT&T?
See a source code release of ksh86a on github. Thanks to Stéphane Chazelas for pointing me to github.