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. 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, 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.
| Tags | Shells |
|---|---|
| Operating Systems | Mac OS X Windows Windows Cygwin POSIX BSD GNU/Hurd Linux Other |
| Implementation | Unix Shell |
Recent releases


Changes: The LOCPATH environment variable is now recognized by the regression test suite (for unprivileged builds), the file descriptor use is now more conservative on Minix 3, enabling it to bootstrap itself there, a "wontfix" bug in ACK (on Minix 3) has been worked around, enabling /usr/bin/cc to be used for compilation, structure alignment and padding has changed, and SIGBUS and the occasional segmentation faults on some architectures (IA64, possibly S/390, maybe more) have been fixed.


Changes: This release has a bugfix for emacs mode bind key macros. It is the first to work on Minix 3 (with GCC only, due to ACK bugs, though).


Changes: Support for unsigned arithmetic. Build system and documentation improvements. Bugfixes for arithmetic on 64 bit machines and pattern substitution in Unicode mode. Fixes for PS1 off-by-one bugs. Fixes for problems with "set -e" yielding better standards compliance. A new, smaller, faster memory allocator.


Changes: New ports were made for QNX, nwcc, and (an incomplete one) for Haiku. A native LLVM build was added (with either llvm-gcc or clang). autoconf-time compiler errors are hidden from build scanners. MKSH_SMALL builds were shrunk even more. __typeof__ is not used. Statements can be used as expressions. An alias expansion bug was fixed. bashiop use inside a function was fixed. strings.h is pulled if it exists. Some format string warnings, dead code, and casts were cleaned up. Lint hints were added. The dot.mkshrc and regression test suite were optimized.


Changes: OSF/1 V2.0 and AIX 5.2 are supported. Portability fixes were made. Work was done on both Emacs and Vi input line editing modes and on improving command line history. A compile-time option was added to have the shell check itself if called as "sh" and reduce functionality in that case (mostly for broken scripts such as debconf). Stack space usage was reduced and dead code was removed. A bugfix sync was done with OpenBSD 4.4-current ksh. The OpenSuSE Build Service RPM, Debian, and pkgsrcĀ® packages supersede the inofficial ones due to being maintained actively enough.
Connect Atlassian dev tools (JIRA, Bamboo, Crucbile, FishEye) to IntelliJ IDEA.
- All comments
Recent commentsNo 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.
Ports
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.
Missing info...
... from the announcement:
BONUS for this release:
- OS-independent source RPM, based upon Pascal Bleser's SuSE-SRPM:
https://herc.mirbsd.org/pub/mksh-29c-1.src.rpm
- OpenBSD port (tested on 4.1/sparc64):
https://herc.mirbsd.org/pub/mksh-obsdport.tgz
- NetBSD® pkgsrc® source package (tested on Interix/SFU 3.5 on win2k/i386):
https://herc.mirbsd.org/pub/mksh-pkgsrc.tgz
(the BSD ports URI is for FreeBSD; the MirPorts
Framework has already been updated with this
release of mksh)