Projects / MirBSD Korn Shell

MirBSD Korn Shell

The MirBSD Korn Shell (mksh) is an actively developed successor of pdksh (the Public Domain Korn Shell), aimed at producing a shell good for interactive use, but with the primary focus on scripting. It is intended to be portable to most *nix-like operating systems as long as they're not too obscure. mksh incorporates improvements from OpenBSD and Debian, as well as bugfixes and enhancements developed for the MirOS, FreeWRT, and MidnightBSD projects and Android. The emacs command line editing mode is UTF-8 capable, and Byte Order Marks are ignored in scripts. The shell supports large files, as well as all pdksh and some csh, AT&T ksh, zsh, and GNU bash features, is compatible with the Bourne shell and POSIX (within limits), has no limit on array sizes, and incorporates some other useful builtins and features. While being already fast and small (without losing functionality), flags to make it even smaller can be given at compile time. An interactive shell reads "~/.mkshrc" on startup.

Operating Systems

Recent releases

  •  12 Jan 2014 01:30

    Release Notes: This release fixes a number of minor bugs, such as ones related to terminal handling, in the dot.mkshrc file, the testsuite runner, and the manual page. This release also adds documentation, some portability, and updates the internal character width code to Unicode 6.3.0.

    •  24 Jul 2013 20:15

      Release Notes: R47 is a must-have bugfix update which corrects most issues popping up with R45/R46 as well as some much older bugs. It is now even more aligned with POSIX behavior, removes the need for cttyhack on Linux, and introduces the new “set ±o inherit-xtrace”, with which the behaviour of “set -x” upon entering a function can be controlled. Character widths are now calculated per the Unicode 6.2.0 standard.

      •  07 Apr 2012 10:00

        Release Notes: This release fixes a nasty regression introduced in R40e. The persistent history code can now use fcntl when flock is not usable, making it available on more systems for those who really want/need to use it. Both the shell and the regression testsuite have reduced system dependencies (str{,n}case{cmp,str},, env, id, printf). The Emacs commandline editing code checks the goto position better against buffer bounds. New targets are available: BeOS, Dell Unix (only with cc, not with gcc), LynxOS, NeXTstep, SCO OpenServer, and SCO UnixWare (including USL C compiler).

        •  25 Mar 2012 00:55

          Release Notes: This must-have update collects bugfixes from three months, including better standards compliance (the IFS test suite now passes), several tab completion-related bugs (UTF-8, backslash-escaped filenames), fixes for the worst problems with persistent history code (use of it is still discouraged), a bugfix for using time in $(…), and better UTF-8 and $COLUMNS/$LINES handling. The sleep builtin is no longer interrupted by SIGWINCH. Support for SkyOS, both Minix 3, QNX, Android, BSD/OS, Cygwin, Interix, and non-GCC has improved. Deprecated features now issue a warning. Most importantly, I/O redirecting an "if" block works again (BZ#496791).

          •  22 Nov 2011 20:38

            Release Notes: This release fixes several small bugs in sh compatibility, UTF-8 handling, Emacs mode, and the build system. It includes some additions to the man page as well as portability fixes for Openstep, Interix, and Hurd and a new port to MSYS.

            Recent comments

            07 Apr 2009 23:01 mirabile

            No further Freshmeat announcements
            will be sent out. The MirOS Project
            now provides an RSS Feed themselves.

            This is due to the changes on the
            website, making it much harder to
            use than even before.

            24 Jul 2008 11:03 mirabile

            I changed the Debian package URI to the official

            Debian site, as the mksh package is kept up to

            date inside Debian by myself.

            The sub-directory ports/ inside the mksh download

            directory (currently) contains ports for

            o Debian (source, diff, signed dsc)

            o RPM (signed Source RPM)

            o OpenBSD (gzsig'd tgz of port)

            o pkgsrc® (gzsig'd tgz of source package)

            For more information, refer to the website, under

            the item Integration in other OSes / build systems.

            24 Apr 2007 05:07 mirabile

            Missing info...
            ... from the announcement:

            BONUS for this release:

            - OS-independent source RPM, based upon Pascal Bleser's SuSE-SRPM:


            - OpenBSD port (tested on 4.1/sparc64):


            - NetBSD® pkgsrc® source package (tested on Interix/SFU 3.5 on win2k/i386):


            (the BSD ports URI is for FreeBSD; the MirPorts

            Framework has already been updated with this

            release of mksh)


            Project Spotlight


            A Fluent OpenStack client API for Java.


            Project Spotlight

            TurnKey TWiki Appliance

            A TWiki appliance that is easy to use and lightweight.