Skip to content

multishell/pdksh

Repository files navigation

		Public Domain Korn Shell
		      Version 4.5

PD KSH:

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 Bull system at work 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.

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

I have released this version 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 :-)

WHATS NEW:

This update includes Job Control for System V (POSIX), many bug
fixes and a simple history file mechanism.  See sh/ChangeLog.

HISTORY:

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.

INSTALLATION:

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
without problems.

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.

ENVIRONMENT:

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
Sun's.

The etc directory contains a set of useful environment files.
These are the same files I use on several systems (many use a
real ksh):
./etc/profile
./etc/sys_config.sh
./etc/ksh.kshrc	

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 
. /etc/ksh.kshrc 
to user's ~/.kshrc to simplify alias management.

BUGS:

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
pdksh-bug@zen.void.oz.au.  

I hope you find this shell as useful as I do...

Simon J. Gerraty <sjg@zen.void.oz.au>