2 |
- |
1 |
|
|
|
2 |
Last updated Jul '99 for pdksh-5.2.14.
|
|
|
3 |
(check ftp://ftp.cs.mun.ca:/pub/pdksh/ or
|
|
|
4 |
http://www.cs.mun.ca/~michael/pdksh/ for new versions/patches)
|
|
|
5 |
|
|
|
6 |
PD-ksh is a mostly complete AT&T ksh look-alike (see NOTES file for a list
|
|
|
7 |
of things not supported). Work is mostly finished to make it fully
|
|
|
8 |
compatible with both POSIX and AT&T ksh (when the two don't conflict).
|
|
|
9 |
|
|
|
10 |
Since pdksh is free and compiles and runs on most common unix systems, it
|
|
|
11 |
is very useful in creating a consistent user interface across multiple
|
|
|
12 |
machines. For example, in the CS dept. of MUN, pdksh is installed on a
|
|
|
13 |
variety of machines including Suns, HPs, DecStations, pcs running Linux,
|
|
|
14 |
etc., and is the login shell of ~5200 users.
|
|
|
15 |
|
|
|
16 |
PDksh is currently being maintained by Michael Rendell (michael@cs.mun.ca),
|
|
|
17 |
who took over from Simon J. Gerraty (sjg@zen.void.oz.au) at the later's
|
|
|
18 |
suggestion. A short list of things that have been added since the last
|
|
|
19 |
public pdksh release (4.9) are auto-configuration, arrays, $(( .. )),
|
|
|
20 |
[[ .. ]], variable attributes, co-processes, extended file globbing,
|
|
|
21 |
many POSIXisms and many bug fixes. See the NEWS and ChangeLog files for
|
|
|
22 |
other features added and bugs fixed.
|
|
|
23 |
|
|
|
24 |
Note that pdksh is provided AS IS, with NO WARRANTY, either expressed or
|
|
|
25 |
implied. Also note that although the bulk of the code in pdksh is in the
|
|
|
26 |
public domain, some files are copyrighten (but freely distributable) and
|
|
|
27 |
subject to certain conditions (eg, don't remove copyright, document any
|
|
|
28 |
changes, etc.). See the LEGAL file for details.
|
|
|
29 |
|
|
|
30 |
If you would like to be notified via email of new releases as they become
|
|
|
31 |
available, send mail to pdksh-request@cs.mun.ca with subject
|
|
|
32 |
"send release notifications" (or "don't send release notifications" to stop
|
|
|
33 |
them).
|
|
|
34 |
|
|
|
35 |
|
|
|
36 |
Files of interest:
|
|
|
37 |
NEWS short list of noticeable changes in various versions.
|
|
|
38 |
CONTRIBUTORS short history of pdksh, people who contributed, etc.
|
|
|
39 |
NOTES lists of known bugs in pdksh, at&t ksh, and posix.
|
|
|
40 |
PROJECTS list of things that need to be done in pdksh.
|
|
|
41 |
BUG-REPORTS list of recently reported bugs that have been fixed
|
|
|
42 |
and all reported bugs that haven't been fixed.
|
|
|
43 |
LEGAL A file detailing legal issues concerning pdksh.
|
|
|
44 |
etc/* system profile and kshrc files used by Simon J. Gerraty.
|
|
|
45 |
misc/README* readme files from previous versions.
|
|
|
46 |
misc/Changes* changelog files from previous versions.
|
|
|
47 |
os2/* files and info needed to compile ksh on os/2.
|
|
|
48 |
tests/* pdksh's regression testing system.
|
|
|
49 |
|
|
|
50 |
|
|
|
51 |
Compiling/Installing:
|
|
|
52 |
|
|
|
53 |
The quick way:
|
|
|
54 |
./configure
|
|
|
55 |
make
|
|
|
56 |
make check # optional
|
|
|
57 |
make install # will install /usr/local/bin/ksh
|
|
|
58 |
# and /usr/local/man/man1/ksh.1
|
|
|
59 |
[add path-to-installed-pdksh to /etc/shells]
|
|
|
60 |
|
|
|
61 |
The more detailed description:
|
|
|
62 |
* run "configure --help | your-favorite-pager" and look at the
|
|
|
63 |
--enable-* and --disable-* options (they are at the end).
|
|
|
64 |
Select any you options you wish to enable/disable
|
|
|
65 |
(most people can skip this step).
|
|
|
66 |
* run configure: this is a GNU autoconf configure script that will generate
|
|
|
67 |
a Makefile and a config.h. Some of the useful options to configure are:
|
|
|
68 |
--prefix=PATH indicates the directory tree under which the binary
|
|
|
69 |
and man page are installed (ie, PATH/bin/ksh and
|
|
|
70 |
PATH/man/man1/ksh.1).
|
|
|
71 |
The default prefix is /usr/local.
|
|
|
72 |
--exec-prefix=PATH overrides --prefix for machine dependent files
|
|
|
73 |
(ie, the ksh binary)
|
|
|
74 |
--program-prefix=pd install binary and man page as pdksh and pdksh.1
|
|
|
75 |
--verbose show what is being defined as script runs
|
|
|
76 |
Note that you don't have to build in the source directory. To build
|
|
|
77 |
in a separate directory, do something like:
|
|
|
78 |
$ mkdir objs
|
|
|
79 |
$ cd objs
|
|
|
80 |
$ ../configure --verbose
|
|
|
81 |
....
|
|
|
82 |
$ make
|
|
|
83 |
See the file INSTALL for a more complete description of configure and its
|
|
|
84 |
generic options (ksh specific options are documented in the --help output)
|
|
|
85 |
* miscellaneous configuration notes:
|
|
|
86 |
* If your make doesn't understand VPATH, you must compile in
|
|
|
87 |
the source directory.
|
|
|
88 |
* On DecStations, MIPS and SONY machines with older C compilers that
|
|
|
89 |
can't handle "int * volatile x", you should use gcc or turn off
|
|
|
90 |
optimization. The problem is configure defines volatile to nothing
|
|
|
91 |
since the compiler can't handle it properly, but the compiler does
|
|
|
92 |
optimizations that the volatile is meant to prevent. So. Use gcc.
|
|
|
93 |
* On MIPS RISC/os 5.0 systems, sysv environment, <signal.h> is
|
|
|
94 |
messed up - it defines sigset_t, but not any of the rest of
|
|
|
95 |
the posix signals (the sigset_t typedef should be in the
|
|
|
96 |
ifdef KERNEL section) - also doesn't have waitpid() or wait3().
|
|
|
97 |
Things compile up ok in the svr4 environment, but it dumps core
|
|
|
98 |
in __start (perhaps our system doesn't have the full svr4
|
|
|
99 |
environ?). Try compiling in the bsd43 environ instead (still not
|
|
|
100 |
perfect - see BUG-REPORTS file), using gcc - cc has problems with
|
|
|
101 |
macro expansions in the argument of a macro (in this case, the ARGS
|
|
|
102 |
macro).
|
|
|
103 |
* On TitanOS (Stardent/Titan), use `CC="cc -43" configure ...'.
|
|
|
104 |
When configure finishes, edit config.h, undef HAVE_DIRENT_H and
|
|
|
105 |
define HAVE_SYS_DIR_H (the dirent.h header file is broken).
|
|
|
106 |
* On Linux (red hat distribution), check that /dev/tty has mode 0666
|
|
|
107 |
(not mode 0644). If it has the wrong permissions, ksh will print
|
|
|
108 |
warnings about not being able to do job control.
|
|
|
109 |
* on NeXT machines (3.2, probably other releases), the siglist.out file
|
|
|
110 |
won't be generated correctly if you try to use the system's compiler
|
|
|
111 |
(it has a broken cc -E and strange header files). There are two
|
|
|
112 |
ways to make it work:
|
|
|
113 |
1) if you have gcc, use it (for everything). Alternatively,
|
|
|
114 |
force configure to use it for CPP, i.e., use
|
|
|
115 |
CPP="gcc -E" configure ...
|
|
|
116 |
2) Force configure to use some extra CPPFLAGS, using
|
|
|
117 |
CPPFLAGS="XXX" configure ...
|
|
|
118 |
where XXX is obtained from running "cc -v YYY.c" on some
|
|
|
119 |
C file. Look at the options passed to cpp (there are lots
|
|
|
120 |
of them...) and replace the XXX above with them.
|
|
|
121 |
Make sure you do a "make distclean" (or "rm config.cache") if
|
|
|
122 |
you re-run configure with a difference CPP or CPPFLAGS.
|
|
|
123 |
Also note that if you are building multiple arch binaries, you
|
|
|
124 |
will have to specify both CC and CPP.
|
|
|
125 |
* run make: everything should compile and link without problems.
|
|
|
126 |
* run make check: this fires up a perl script that checks for some known
|
|
|
127 |
and some fixed bugs. The script prints pass/fail for tests it expected
|
|
|
128 |
to pass/fail, and PASS/FAIL for tests it expected to fail/pass. If you
|
|
|
129 |
don't have perl, or if your perl doesn't work (most common problem is
|
|
|
130 |
the .ph header files are missing or broken), you can run
|
|
|
131 |
ENV= path-to-pdksh-executable misc/Bugs path-to-pdksh-executable
|
|
|
132 |
instead.
|
|
|
133 |
* run make install: this installs ksh (in /usr/local/bin/ksh by default,
|
|
|
134 |
or where ever you told configure to put things).
|
|
|
135 |
* add path-to-installed-pdksh to /etc/shells if it's not already there.
|
|
|
136 |
This is only needed if you intend to use pdksh as a login shell (things
|
|
|
137 |
like ftp won't allow users to connect in if their shell isn't in this
|
|
|
138 |
file).
|
|
|
139 |
|
|
|
140 |
The following is a list of machines that pdksh is reported to work on:
|
|
|
141 |
-/PC Linux 1.x,2.x
|
|
|
142 |
-/PC NetBSD 0.9a
|
|
|
143 |
-/PC BSDI 1.1
|
|
|
144 |
-/PC FreeBSD 2.x, 3.x
|
|
|
145 |
-/PC OpenBSD
|
|
|
146 |
-/PC Interactive/Sunsoft 3.0.1 and 4.1 (note that problems have been
|
|
|
147 |
reported with isc3.2 - see the BUG-REPORTS file)
|
|
|
148 |
-/PC OS/2
|
|
|
149 |
Commadore/Amiga NetBSD 1.0
|
|
|
150 |
Dec/alpha OSF/1 v2.x, v3.x
|
|
|
151 |
Dec/alpha NetBSD 1.1B
|
|
|
152 |
Dec/pmax Ultrix 4.2
|
|
|
153 |
Dec/vax Ultrix 2.2 (not tested recently :-))
|
|
|
154 |
Dec/vax 4.3BSD+NFS (MtXinu) (not tested recently :-))
|
|
|
155 |
HP/pa HP-UX 9.01
|
|
|
156 |
IBM/RS/6000 AIX 3.2.5
|
|
|
157 |
MIPS/m120 RISC/os 5.0 (bsd43 environ)
|
|
|
158 |
NeXT NeXTStep 3.2
|
|
|
159 |
SGI/IRIX 6.2
|
|
|
160 |
Sun/sun4 SunOS 4.1.3, 4.1.4
|
|
|
161 |
Sun/sun4 Solaris 2.x
|
|
|
162 |
Sun/sun386i SunOS 4.0.2
|
|
|
163 |
Sun/sun3 SunOS 4.0.3, 4.1.1_U1
|
|
|
164 |
Stardent/TitanOS 4.2
|
|
|
165 |
|
|
|
166 |
|
|
|
167 |
Newer versions of pdksh may be available from
|
|
|
168 |
ftp://ftp.cs.mun.ca:/pub/pdksh/
|
|
|
169 |
you may want to check for one if you run into any problems, as the problem may
|
|
|
170 |
already be fixed (you can get new release notifications automatically - see
|
|
|
171 |
above). The file pdksh-unstable-XXX.tar.gz has the very latest version which
|
|
|
172 |
may not compile (it is generated automatically when changes are detected
|
|
|
173 |
in the main source repository) - it is for those who want to follow
|
|
|
174 |
changes as they are made.
|
|
|
175 |
|
|
|
176 |
You can send bug reports, fixes, and enhancements to pdksh@cs.mun.ca (please
|
|
|
177 |
don't assume I will see bug reports that are posted to some newsgroup or
|
|
|
178 |
mailing list - I probably won't).
|
|
|
179 |
If you are reporting a bug (with or without a fix), please include
|
|
|
180 |
* the version of pdksh you are using (see version.c, or, if you are
|
|
|
181 |
running pdksh, try echo $KSH_VERSION),
|
|
|
182 |
* the machine, operating system and compiler you are using,
|
|
|
183 |
* and a description of how to repeat the bug (a small shell
|
|
|
184 |
script that demonstrates the bug is best).
|
|
|
185 |
as well as the following, if relevant (if you aren't sure, include them)
|
|
|
186 |
* what options you are using (both configure options and set -o options)
|
|
|
187 |
* the output of configure, with the verbose flag
|
|
|
188 |
(eg, make distclean; ./configure --verbose)
|
|
|
189 |
* the contents of config.log (this is created by the configure script)
|
|
|
190 |
* if you are using gcc (the GNU C compiler), which version it is.
|
|
|
191 |
|
|
|
192 |
BTW, THE MOST FREQUENTLY REPORTED BUG IS
|
|
|
193 |
echo hi | read a; echo $a # Does not print hi
|
|
|
194 |
I'm aware of this and there is no need to report it.
|
|
|
195 |
|
|
|
196 |
Michael Rendell, michael@cs.mun.ca
|