Provided by: mksh_46-2ubuntu3_amd64 bug


     lksh — Legacy Korn shell built on mksh


     lksh [-+abCefhiklmnprUuvXx] [-+o opt] [-c string | -s | file [args ...]]


     lksh is a command interpreter intended exclusively for running legacy shell scripts.  It is
     built on mksh; refer to its manual page for details on the scripting language.  It is
     recommended to port scripts to mksh instead of relying on legacy or idiotic POSIX-mandated
     behaviour, since the MirBSD Korn Shell scripting language is much more consistent.


     lksh has the following differences from mksh:

     ·   There is no explicit support for interactive use, nor any command line editing or
         history code.  Hence, lksh is not suitable as a user's login shell, either; use mksh

     ·   The KSH_VERSION string identifies lksh as “LEGACY KSH” instead of “MIRBSD KSH”.

     ·   lksh only offers the traditional ten file descriptors to scripts.

     ·   lksh uses POSIX arithmetics, which has quite a few implications: The data type for
         arithmetics is the host ISO C long data type.  Signed integer wraparound is Undefined
         Behaviour.  The sign of the result of a modulo operation with at least one negative
         operand is unspecified.  Shift operations on negative numbers are unspecified.  Division
         of the largest negative number by -1 is Undefined Behaviour.  The compiler is permitted
         to delete all data and crash the system if Undefined Behaviour occurs.

     ·   The rotation arithmetic operators are not available.

     ·   The shift arithmetic operators take all bits of the second operand into account; if they
         exceed permitted precision, the result is unspecified.

     ·   The GNU bash extension &> to redirect stdout and stderr in one go is not parsed.

     ·   The mksh command line option -T is not available.

     ·   Unless set -o posix is active, lksh always uses traditional mode for constructs like:

               $ set -- $(getopt ab:c "$@")
               $ echo $?

         POSIX mandates this to show 0, but traditional mode passes through the errorlevel from
         the getopt(1) command.

     ·   lksh, unlike AT&T UNIX ksh, does not keep file descriptors > 2 private.




     To use lksh as /bin/sh, compilation to enable set -o posix by default is highly recommended
     for better standards compliance.

     lksh tries to make a cross between a legacy bourne/posix compatibl-ish shell and a legacy
     pdksh-alike but “legacy” is not exactly specified.

     The set built-in command does not have all options one would expect from a full-blown mksh
     or pdksh.

     Talk to the MirOS development team using the mailing list at <> or the
     #!/bin/mksh (or #ksh) IRC channel at (Port 6697 SSL, 6667 unencrypted) if
     you need any further quirks or assistance, and consider migrating your legacy scripts to
     work with mksh instead of requiring lksh.