Public Domain Korn Shell
This is the latest version of the PD ksh (pdksh). It is not
intended to be the ultimate shell but rather a usable ksh work
alike. For those of us who have to work on multiple systems it
is nice to have the same user interface on all. I resisted
moving to the ksh on a System V machine where I worked, for
nearly a year due to the lack of a ksh on my Sun systems. When
I first picked up the 3.2 PD KSH a couple of years ago, it took
only a few minutes to convert a C-shell fan to a ksh fan 🙂
Pdksh is not 100% compatible with the ksh. Having said that, I
use it daily beside a real ksh88 and find them virtually
indistinguishable. With one exception - arrays! If some one
feels like adding arrays, I for one would appreciate it 🙂
I only run this shell on sun's and only for interactive use. I
use it on sun4c, sun3 and sun386 systems. The shell itself has
been compiled on each of these both with and without the
POSIX/ANSI compatability libraries in ./std. See the file
MACHINES for details of systems that the shell has been built
I released version 4.0 of the shell (with the kind permission of
the previous maintainers and major contributors) to ensure that
it is available from usenet archive sites. Of course it remains
in the Public Domain. Equally obviously neither myself nor any
other contributors make any claims of suitability etc. Ie. NO
WARRANTY!!! If you make any changes and distribute them, please
leave your own finger prints in the source. Its bad enough
being flamed for my own bugs let alone anyone elses 🙂
This shell was written by Eric Gisin. It is based on Charles
Forsyth's public domain V7 shell, which he later contributed to
Minix. John R MacMillan picked up Eric Gisin's version after
Eric moved on to other projects (see ReadMe.jrm).
Since then there have been many contributors to this shell.
Most have left their fingerprints within the source and various
ReadMe.xxx and Changes.xxx files reflect their input.
This version is basically that known as Eric Gisin's version 3.3
alpha which I obtained indirectly from John R MacMillan who is
the most recent maintainer. This version has much improved
emacs-mode command line editing (my main contribution) plus
enough extra emacs-mode features to make it difficult to
distinguish from ksh88. Bug fixes from various contributors are
the only other changes from John MacMillan's version.
I have upped the version number for this release to distinguish
it from the original 3.3 version. This version is much improved
despite the small number of new features.
The file INSTALL contains intructions for building and
installing the shell.
The original instructions indicated that a POSIX compliant
environment and possibly an ANSI compiler are required. I have
used both gcc and native Sun and the GreenHills ANSI compiler
The POSIX/STDC compatability stuff in ./std seems to cause lots
of problems for some systems. This was at least in part because
I distributed it with half the librraies disabled :-), in any
case the shell itself in ./sh can now be compiled without any of
the ./std stuff which makes things much simpler on systems that
have a real POSIX environment.
Porting to new environemnts can be a real pain. I don't really
plan to make a huge effort in this area since I expect that this
shell will be mainly required on exotic or obscure systems (the
ones that the vendor does not provide a ksh for). Thus the
small "market" does not warrant a C-news or X11 style
portability effort. Of course if people send patches for
various systems I'm happy to try and integrate them.
My main interest in this shell is for Sun workstations. Every
other UNIX system I use comes with a real ksh. Being a strictly
C-shell environment, some improved profile files are in order on
The etc directory contains a set of useful environment files.
These are the same files I use on several systems (many use a
The first one is obvious. The second, sys_config.sh is sourced
by /etc/profile and several other scripts. It is used to
determine the system type so that scripts like profile can be
used on multiple platforms.
The third one is also quite useful, add
to user's ~/.kshrc to simplify alias management.
Many folk have contributed to this shell.
I have attempted to credit (in sh/ChangeLog) the authors of bug
fixes received since the previous release.
There are surely still plenty of bugs to be found/fixed.
There is a template bug report in bug-report [borrowed from the
X11R5 mit tree], just fill in the blanks and mail to[email protected]
I hope you find this shell as useful as I do...
Simon J. Gerraty