pdksh - the Public Domain Korn Shell
PD-ksh is a clone of the AT&T Korn shell. At the moment, it has
most of the ksh88 features, not much of the ksh93 features, and
a number of its own features.
pdksh was initially created by Eric Gisin using Charles Forsyth's public
domain V7 shell as a base as well as parts of the BRL shell.
Since then a number of people have maintained and contributed to it
(see CONTRIBUTORS for details); it
is currently maintained by
pdksh's strong points are:
Its weak points are that there are still a few differences from ksh88
(the major one is that `echo hi | read x' does not set x
in the current shell - the read is done in a separate process).
See the NOTES file in the distribution for more details.
- its free and quite portable - you should be able to compile it easily
on pretty much any unix box.
- the vi editing mode is better (IMHO) than that of ksh88 or ksh93
(command/file completion using tab (optional), less buggy).
Here is the pdksh man page (currently
has no hyperlinks, but these will hopefully be added soon).
Note: this is a single large file (~140k).
The current stable version is
The following are files from this distribution:
a file describing pdksh, how to configure it, etc.
short list of noticeable changes in various versions.
short history of pdksh, people who contributed, etc.
lists of known bugs in pdksh, at&t ksh, and posix.
list of things that need to be done in pdksh.
list of recently reported bugs that have been fixed
and all reported bugs that haven't been fixed.
A file detailing legal issues concerning pdksh (what
is/isn't covered by what copyright, etc.).
GNU-style log of source code changes.
There is also an unstable version - check the
(or http site)
and look for pdksh-unstable-*.
The unstable versions include bug fixes and enhancements that have not
been throughly tested yet - they are provided to allow other
pdksh developers to see what is going on behind the scenes and to
allow the adventurous to test and report problems before the changes are
put into a `stable' version.
The pdksh source distribution can be obtained from the directory
This directory also contains:
binary distribution for OS/2
(currently version 5.2.4).
The OS/2 port is maintained by Dale DePriest.
- a pre-nroffed
ascii man page
(there is also an html version ).
Note that the source distribution contains only the raw nroff man page,
not this pre-formatted one.
- patches for the current distribution as they become available
(look for files of the form
Note that patches should be applied in sequence (i.e.,
patch-1, then patch-2, etc.).
The following sites have been known to mirror the above directory:
You can send bug reports, fixes, and enhancements to
don't assume I will see bug reports that are posted to some newsgroup or
mailing list - I probably won't).
If you are reporting a bug (with or without a fix), please include
as well as the following, if relevant (if you aren't sure, include them)
- the version of pdksh you are using (see version.c, or, if you are
running pdksh, try echo $KSH_VERSION),
- the machine, operating system and compiler you are using,
- and a description of how to repeat the bug (a small shell
script that demonstrates the bug is best).
- what options you are using (both configure options and set -o options)
- the output of configure, with the verbose flag
(eg, ./configure --verbose)
- the contents of config.log (this is created by the configure script)
- if you are using gcc (the GNU C compiler), which version it is.
BTW, the most frequently reported bug is
echo hi | read a; echo $a # Does not print hi
I'm aware of this and there is no need to report it.
Year 2000 (y2k) Issues
There are no y2k problems in pdksh.
This is simply because the shell does not use `dates' (year, month, day, ..).
Time, when it is used, is stored and manipulated as a 32 bit signed integer
(the standard unix time representation), which means you need to worry