MirBSD Korn Shell for Jehanne
Go to file
tg 6612f83855 did. anybody. ever. say. this. is. ok. in. HEAD? 2004-11-13 01:55:35 +00:00
tests sync and bump to 1.16 2004-11-10 17:22:14 +00:00
Build.sh * Build.sh: bail out early if build failure 2004-11-10 19:58:06 +00:00
CONTRIBUTORS mop licence 2004-06-02 15:06:50 +00:00
Makefile remove mail check functionality (everybody SANE uses uw, imaps and mbx now) 2004-11-10 17:13:11 +00:00
NOTES remove mail check functionality (everybody SANE uses uw, imaps and mbx now) 2004-11-10 17:13:11 +00:00
PROJECTS remove mail check functionality (everybody SANE uses uw, imaps and mbx now) 2004-11-10 17:13:11 +00:00
README sync and bump to 1.16 2004-11-10 17:22:14 +00:00
aclocal.m4 run GNU protoize 2004-10-28 11:53:44 +00:00
alloc.c restore text of original licence clause, even if it's got bad chars in it 2004-11-01 12:30:09 +00:00
c_ksh.c run GNU protoize 2004-10-28 11:53:44 +00:00
c_sh.c run GNU protoize 2004-10-28 11:53:44 +00:00
c_test.c run GNU protoize 2004-10-28 11:53:44 +00:00
c_test.h run GNU protoize 2004-10-28 11:53:44 +00:00
c_ulimit.c run GNU protoize 2004-10-28 11:53:44 +00:00
chvt.c nicen error msg (post-1.16!) 2004-11-10 20:08:21 +00:00
conf-end.h fixes for stuff, better display of mksh version, etc. 2004-10-28 16:35:03 +00:00
config.h run GNU protoize 2004-10-28 11:53:44 +00:00
configure fixes for stuff, better display of mksh version, etc. 2004-10-28 16:35:03 +00:00
configure.in run GNU protoize 2004-10-28 11:53:44 +00:00
edit.c run GNU protoize 2004-10-28 11:53:44 +00:00
edit.h run GNU protoize 2004-10-28 11:53:44 +00:00
emacs-gen.sh de-register, de-inline, de-__P 2004-10-28 11:11:19 +00:00
emacs.c run GNU protoize 2004-10-28 11:53:44 +00:00
eval.c run GNU protoize 2004-10-28 11:53:44 +00:00
exec.c run GNU protoize 2004-10-28 11:53:44 +00:00
expand.h run GNU protoize 2004-10-28 11:53:44 +00:00
expr.c run GNU protoize 2004-10-28 11:53:44 +00:00
history.c run GNU protoize 2004-10-28 11:53:44 +00:00
io.c run GNU protoize 2004-10-28 11:53:44 +00:00
jobs.c run GNU protoize 2004-10-28 11:53:44 +00:00
ksh.1tbl hm, we removed the date from $KSH_VERSION a short while ago for size 2004-11-10 17:18:29 +00:00
ksh_dir.h run GNU protoize 2004-10-28 11:53:44 +00:00
ksh_limval.h run GNU protoize 2004-10-28 11:53:44 +00:00
ksh_stat.h run GNU protoize 2004-10-28 11:53:44 +00:00
ksh_time.h run GNU protoize 2004-10-28 11:53:44 +00:00
ksh_times.h run GNU protoize 2004-10-28 11:53:44 +00:00
ksh_wait.h run GNU protoize 2004-10-28 11:53:44 +00:00
lex.c run GNU protoize 2004-10-28 11:53:44 +00:00
lex.h merge 2004-11-03 15:33:01 +00:00
main.c remove mail check functionality (everybody SANE uses uw, imaps and mbx now) 2004-11-10 17:13:11 +00:00
misc.c apparently fix coredumps 2004-10-31 23:01:18 +00:00
missing.c unify spacing of RCS IDs 2004-09-21 11:57:17 +00:00
path.c run GNU protoize 2004-10-28 11:53:44 +00:00
proto.h remove mail check functionality (everybody SANE uses uw, imaps and mbx now) 2004-11-10 17:13:11 +00:00
rnd.c * Build.sh: fix a bug preventing build on MirOS #7-stable (sparc) 2004-08-27 14:55:45 +00:00
sh.1tbl sync and bump to 1.16 2004-11-10 17:22:14 +00:00
sh.h * Build.sh: bail out early if build failure 2004-11-10 19:58:06 +00:00
shf.c run GNU protoize 2004-10-28 11:53:44 +00:00
shf.h run GNU protoize 2004-10-28 11:53:44 +00:00
siglist.in polish, mop up whitespace, etc. 2004-05-24 19:56:25 +00:00
siglist.sh -Wall -Werror -W -pedantic clean 2004-10-28 11:03:24 +00:00
syn.c run GNU protoize 2004-10-28 11:53:44 +00:00
table.c run GNU protoize 2004-10-28 11:53:44 +00:00
table.h remove mail check functionality (everybody SANE uses uw, imaps and mbx now) 2004-11-10 17:13:11 +00:00
trap.c run GNU protoize 2004-10-28 11:53:44 +00:00
tree.c run GNU protoize 2004-10-28 11:53:44 +00:00
tree.h run GNU protoize 2004-10-28 11:53:44 +00:00
tty.c run GNU protoize 2004-10-28 11:53:44 +00:00
tty.h run GNU protoize 2004-10-28 11:53:44 +00:00
var.c remove mail check functionality (everybody SANE uses uw, imaps and mbx now) 2004-11-10 17:13:11 +00:00
version.c sync and bump to 1.16 2004-11-10 17:22:14 +00:00
vi.c run GNU protoize 2004-10-28 11:53:44 +00:00

README

$MirBSD: README,v 1.5 2004/11/10 17:22:12 tg Exp $

This is the README for mirbsdksh, developed as part of the MirBSD
operating system at The MirOS Project, and produced portably.
Legal information is provided about a screenpage farther down.

To build on MirOS only, issue 'make obj && make depend && make'.

To build on other systems, consult:
 * if you have a pre-installed GNU bash or (pd)ksh
   => there have been build problems e.g. with /bin/sh on
      Solaris, which isn't the Bourne shell anyways
 * if you can build statically
   => this is not possible on Solaris and Mac OSX, for example
 * if you need additional libs

Then issue a command like
$ SHELL=bash bash ./Build.sh
$ SHELL=ksh WEIRD_OS=1 LDFLAGS=-ldl ksh ./Build.sh

Always try with as few options first as possible.

Set the CC, CFLAGS, CPPFLAGS and LDFLAGS environment variables
to your likes. Don't complain if anything doesn't work.


LEGAL INFORMATION

This package as a whole is placed under the MirOS licence template
as contained in the "version.c" source code file in this distribu-
tion, by having the project leader asserting a collective copyright.

The files alloc.c (Marc Espie), ksh.1tbl and sh.1tbl (University of
California, Berkeley) are provided under a 2-clause or 3-clause BSD
licence, respectively.

All files from the original pdksh distribution which were not public
domain have been removed from the source tree, with the exception of
aclocal.m4, from which only the functions which required the file to
be under the GNU GPL have been removed.


The information below is mostly unmaintained.
________________________________________________________________________

$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:
	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.
	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.
	* On TitanOS (Stardent/Titan), use 'CC="cc -43" configure ...'.
	  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