2004-04-17 02:47:20 +02:00
|
|
|
$MirBSD: README,v 1.2 2004/04/17 00:47:16 tg Exp $
|
2003-03-22 18:35:03 +01:00
|
|
|
$OpenBSD: README,v 1.10 2003/03/10 03:48:16 david Exp $
|
|
|
|
|
|
|
|
Last updated Jul '99 for pdksh-5.2.14.
|
|
|
|
(check ftp://ftp.cs.mun.ca:/pub/pdksh/ or
|
|
|
|
http://www.cs.mun.ca/~michael/pdksh/ for new versions/patches)
|
|
|
|
|
|
|
|
PD-ksh is a mostly complete AT&T ksh look-alike (see NOTES file for a list
|
|
|
|
of things not supported). Work is mostly finished to make it fully
|
|
|
|
compatible with both POSIX and AT&T ksh (when the two don't conflict).
|
|
|
|
|
|
|
|
Since pdksh is free and compiles and runs on most common unix systems, it
|
|
|
|
is very useful in creating a consistent user interface across multiple
|
|
|
|
machines. For example, in the CS dept. of MUN, pdksh is installed on a
|
|
|
|
variety of machines including Suns, HPs, DecStations, pcs running Linux,
|
|
|
|
etc., and is the login shell of ~5200 users.
|
|
|
|
|
|
|
|
PDksh is currently being maintained by Michael Rendell (michael@cs.mun.ca),
|
|
|
|
who took over from Simon J. Gerraty (sjg@zen.void.oz.au) at the later's
|
|
|
|
suggestion. A short list of things that have been added since the last
|
|
|
|
public pdksh release (4.9) are auto-configuration, arrays, $(( .. )),
|
|
|
|
[[ .. ]], variable attributes, co-processes, extended file globbing,
|
|
|
|
many POSIXisms and many bug fixes. See the NEWS and ChangeLog files for
|
|
|
|
other features added and bugs fixed.
|
|
|
|
|
|
|
|
Note that pdksh is provided AS IS, with NO WARRANTY, either expressed or
|
|
|
|
implied. Also note that although the bulk of the code in pdksh is in the
|
|
|
|
public domain, some files are copyrighten (but freely distributable) and
|
|
|
|
subject to certain conditions (eg, don't remove copyright, document any
|
|
|
|
changes, etc.). See the LEGAL file for details.
|
|
|
|
|
|
|
|
If you would like to be notified via email of new releases as they become
|
|
|
|
available, send mail to pdksh-request@cs.mun.ca with subject
|
|
|
|
"send release notifications" (or "don't send release notifications" to stop
|
|
|
|
them).
|
|
|
|
|
|
|
|
|
|
|
|
Files of interest:
|
|
|
|
NEWS short list of noticeable changes in various versions.
|
|
|
|
CONTRIBUTORS short history of pdksh, people who contributed, etc.
|
|
|
|
NOTES lists of known bugs in pdksh, at&t ksh, and posix.
|
|
|
|
PROJECTS list of things that need to be done in pdksh.
|
|
|
|
BUG-REPORTS list of recently reported bugs that have been fixed
|
|
|
|
and all reported bugs that haven't been fixed.
|
|
|
|
LEGAL A file detailing legal issues concerning pdksh.
|
|
|
|
etc/* system profile and kshrc files used by Simon J. Gerraty.
|
|
|
|
misc/README* readme files from previous versions.
|
|
|
|
misc/Changes* changelog files from previous versions.
|
|
|
|
os2/* files and info needed to compile ksh on os/2.
|
|
|
|
tests/* pdksh's regression testing system.
|
|
|
|
|
|
|
|
|
|
|
|
Compiling/Installing:
|
|
|
|
|
|
|
|
The quick way:
|
|
|
|
./configure
|
|
|
|
make
|
|
|
|
make check # optional
|
|
|
|
make install # will install /usr/local/bin/ksh
|
|
|
|
# and /usr/local/man/man1/ksh.1
|
|
|
|
[add path-to-installed-pdksh to /etc/shells]
|
|
|
|
|
|
|
|
The more detailed description:
|
|
|
|
* run "configure --help | your-favorite-pager" and look at the
|
|
|
|
--enable-* and --disable-* options (they are at the end).
|
|
|
|
Select any you options you wish to enable/disable
|
|
|
|
(most people can skip this step).
|
|
|
|
* run configure: this is a GNU autoconf configure script that will generate
|
|
|
|
a Makefile and a config.h. Some of the useful options to configure are:
|
|
|
|
--prefix=PATH indicates the directory tree under which the binary
|
|
|
|
and man page are installed (ie, PATH/bin/ksh and
|
|
|
|
PATH/man/man1/ksh.1).
|
|
|
|
The default prefix is /usr/local.
|
|
|
|
--exec-prefix=PATH overrides --prefix for machine dependent files
|
|
|
|
(ie, the ksh binary)
|
|
|
|
--program-prefix=pd install binary and man page as pdksh and pdksh.1
|
|
|
|
--verbose show what is being defined as script runs
|
|
|
|
Note that you don't have to build in the source directory. To build
|
|
|
|
in a separate directory, do something like:
|
|
|
|
$ mkdir objs
|
|
|
|
$ cd objs
|
|
|
|
$ ../configure --verbose
|
|
|
|
....
|
|
|
|
$ make
|
|
|
|
See the file INSTALL for a more complete description of configure and its
|
|
|
|
generic options (ksh specific options are documented in the --help output)
|
|
|
|
* miscellaneous configuration notes:
|
|
|
|
* If your make doesn't understand VPATH, you must compile in
|
|
|
|
the source directory.
|
|
|
|
* On DecStations, MIPS and SONY machines with older C compilers that
|
|
|
|
can't handle "int * volatile x", you should use gcc or turn off
|
|
|
|
optimization. The problem is configure defines volatile to nothing
|
|
|
|
since the compiler can't handle it properly, but the compiler does
|
|
|
|
optimizations that the volatile is meant to prevent. So. Use gcc.
|
|
|
|
* On MIPS RISC/os 5.0 systems, sysv environment, <signal.h> is
|
|
|
|
messed up - it defines sigset_t, but not any of the rest of
|
|
|
|
the posix signals (the sigset_t typedef should be in the
|
|
|
|
ifdef KERNEL section) - also doesn't have waitpid() or wait3().
|
|
|
|
Things compile up ok in the svr4 environment, but it dumps core
|
|
|
|
in __start (perhaps our system doesn't have the full svr4
|
|
|
|
environ?). Try compiling in the bsd43 environ instead (still not
|
|
|
|
perfect - see BUG-REPORTS file), using gcc - cc has problems with
|
|
|
|
macro expansions in the argument of a macro (in this case, the ARGS
|
|
|
|
macro).
|
2004-04-17 02:47:20 +02:00
|
|
|
* On TitanOS (Stardent/Titan), use 'CC="cc -43" configure ...'.
|
2003-03-22 18:35:03 +01:00
|
|
|
When configure finishes, edit config.h, undef HAVE_DIRENT_H and
|
|
|
|
define HAVE_SYS_DIR_H (the dirent.h header file is broken).
|
|
|
|
* On Linux (red hat distribution), check that /dev/tty has mode 0666
|
|
|
|
(not mode 0644). If it has the wrong permissions, ksh will print
|
|
|
|
warnings about not being able to do job control.
|
|
|
|
* on NeXT machines (3.2, probably other releases), the siglist.out file
|
|
|
|
won't be generated correctly if you try to use the system's compiler
|
|
|
|
(it has a broken cc -E and strange header files). There are two
|
|
|
|
ways to make it work:
|
|
|
|
1) if you have gcc, use it (for everything). Alternatively,
|
|
|
|
force configure to use it for CPP, i.e., use
|
|
|
|
CPP="gcc -E" configure ...
|
|
|
|
2) Force configure to use some extra CPPFLAGS, using
|
|
|
|
CPPFLAGS="XXX" configure ...
|
|
|
|
where XXX is obtained from running "cc -v YYY.c" on some
|
|
|
|
C file. Look at the options passed to cpp (there are lots
|
|
|
|
of them...) and replace the XXX above with them.
|
|
|
|
Make sure you do a "make distclean" (or "rm config.cache") if
|
|
|
|
you re-run configure with a difference CPP or CPPFLAGS.
|
|
|
|
Also note that if you are building multiple arch binaries, you
|
|
|
|
will have to specify both CC and CPP.
|
|
|
|
* run make: everything should compile and link without problems.
|
|
|
|
* run make check: this fires up a perl script that checks for some known
|
|
|
|
and some fixed bugs. The script prints pass/fail for tests it expected
|
|
|
|
to pass/fail, and PASS/FAIL for tests it expected to fail/pass. If you
|
|
|
|
don't have perl, or if your perl doesn't work (most common problem is
|
|
|
|
the .ph header files are missing or broken), you can run
|
|
|
|
ENV= path-to-pdksh-executable misc/Bugs path-to-pdksh-executable
|
|
|
|
instead.
|
|
|
|
* run make install: this installs ksh (in /usr/local/bin/ksh by default,
|
|
|
|
or where ever you told configure to put things).
|
|
|
|
* add path-to-installed-pdksh to /etc/shells if it's not already there.
|
|
|
|
This is only needed if you intend to use pdksh as a login shell (things
|
|
|
|
like ftp won't allow users to connect in if their shell isn't in this
|
|
|
|
file).
|
|
|
|
|
|
|
|
The following is a list of machines that pdksh is reported to work on:
|
|
|
|
-/PC Linux 1.x,2.x
|
|
|
|
-/PC NetBSD 0.9a
|
|
|
|
-/PC BSDI 1.1
|
|
|
|
-/PC FreeBSD 2.x, 3.x
|
|
|
|
-/PC OpenBSD
|
|
|
|
-/PC Interactive/Sunsoft 3.0.1 and 4.1 (note that problems have been
|
|
|
|
reported with isc3.2 - see the BUG-REPORTS file)
|
|
|
|
-/PC OS/2
|
|
|
|
Commodore/Amiga NetBSD 1.0
|
|
|
|
Dec/alpha OSF/1 v2.x, v3.x
|
|
|
|
Dec/alpha NetBSD 1.1B
|
|
|
|
Dec/pmax Ultrix 4.2
|
|
|
|
Dec/vax Ultrix 2.2 (not tested recently :-))
|
|
|
|
Dec/vax 4.3BSD+NFS (MtXinu) (not tested recently :-))
|
|
|
|
HP/pa HP-UX 9.01
|
|
|
|
IBM/RS/6000 AIX 3.2.5
|
|
|
|
MIPS/m120 RISC/os 5.0 (bsd43 environ)
|
|
|
|
NeXT NeXTStep 3.2
|
|
|
|
SGI/IRIX 6.2
|
|
|
|
Sun/sun4 SunOS 4.1.3, 4.1.4
|
|
|
|
Sun/sun4 Solaris 2.x
|
|
|
|
Sun/sun386i SunOS 4.0.2
|
|
|
|
Sun/sun3 SunOS 4.0.3, 4.1.1_U1
|
|
|
|
Stardent/TitanOS 4.2
|
|
|
|
|
|
|
|
|
|
|
|
Newer versions of pdksh may be available from
|
|
|
|
ftp://ftp.cs.mun.ca:/pub/pdksh/
|
|
|
|
you may want to check for one if you run into any problems, as the problem may
|
|
|
|
already be fixed (you can get new release notifications automatically - see
|
|
|
|
above). The file pdksh-unstable-XXX.tar.gz has the very latest version which
|
|
|
|
may not compile (it is generated automatically when changes are detected
|
|
|
|
in the main source repository) - it is for those who want to follow
|
|
|
|
changes as they are made.
|
|
|
|
|
|
|
|
You can send bug reports, fixes, and enhancements to pdksh@cs.mun.ca (please
|
|
|
|
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
|
|
|
|
* 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).
|
|
|
|
as well as the following, if relevant (if you aren't sure, include them)
|
|
|
|
* what options you are using (both configure options and set -o options)
|
|
|
|
* the output of configure, with the verbose flag
|
|
|
|
(eg, make distclean; ./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.
|
|
|
|
|
|
|
|
Michael Rendell, michael@cs.mun.ca
|