MirOS Manual: lksh(1)

LKSH(1)                      BSD Reference Manual                      LKSH(1)

NAME

     lksh - Legacy Korn shell built on mksh

SYNOPSIS

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

DESCRIPTION

     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 in-
     stead of relying on legacy or idiotic POSIX-mandated behaviour, since the
     MirBSD Korn Shell scripting language is much more consistent.

LEGACY MODE

     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 instead.

     •   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 un-
         specified.

     •   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.

SEE ALSO

     mksh(1)

     https://www.mirbsd.org/mksh.htm

     https://www.mirbsd.org/ksh-chan.htm

CAVEATS

     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
     <miros-mksh@mirbsd.org> or the #!/bin/mksh (or #ksh) IRC channel at
     irc.freenode.net (Port 6697 SSL, 6667 unencrypted) if you need any furth-
     er quirks or assistance, and consider migrating your legacy scripts to
     work with mksh instead of requiring lksh.

MirOS                            May 22, 2013                                1

Generated on 2014-07-04 21:17:45 by $MirOS: src/scripts/roff2htm,v 1.79 2014/02/10 00:36:11 tg Exp $

These manual pages and other documentation are copyrighted by their respective writers; their source is available at our CVSweb, AnonCVS, and other mirrors. The rest is Copyright © 2002‒2014 The MirOS Project, Germany.
This product includes material provided by Thorsten Glaser.

This manual page’s HTML representation is supposed to be valid XHTML/1.1; if not, please send a bug report – diffs preferred.