mop up, sweep clean

This commit is contained in:
tg 2003-07-09 19:02:04 +00:00
parent b6c1fb994d
commit 7b9892ed15
7 changed files with 22 additions and 7555 deletions

File diff suppressed because it is too large Load Diff

View File

@ -1,129 +0,0 @@
$OpenBSD: CONTRIBUTORS,v 1.9 1999/07/14 13:37:23 millert Exp $
This is a partial history of this shell gleened from old change logs and
readmes (most of which are still in the misc directory) and the source
code. Hopefully it is correct and no contributors have been left out
(file a bug report if you spot a problem :-)).
Release history:
* Eric Gisin (egisin@math.uwaterloo.ca), created pdksh, using
Charles Forsyth's public domain V7 shell as a base; also used parts
of the BRL shell (written by Doug A Gwyn, Doug Kingston, Ron Natalie,
Arnold Robbins, Lou Salkind, and others?, circa '87; the parts used in
pdksh included getopts, test builtin, ulimit, tty setting/getting, emacs
editing, and job control; the test builtin was based on code by Erik
Baalbergen).
'87..'89 ?
Released versions: .. 3.2
* John R MacMillan (@yonge.csri.toronto.edu:chance!john@sq.sq.com)
takes over as maintainer
dates?
Released versions: 3.3 (?)
* Simon J. Gerraty (sjg@zen.void.oz.au) takes over as maintainer
Nov '91..July '94 ?
Released versions: 4.0 .. 4.9
* Michael Rendell (michael@cs.mun.ca) takes over as maintainer
July, 1994
Released versions: 5.0 .. 5.2
Major contributions:
* John R MacMillan (@yonge.csri.toronto.edu:chance!john@sq.sq.com), ?:
cleaned up configuration, many bug fixes (see misc/Changes.jrm).
* Simon Gerraty, (sjg@zen.void.oz.au), Nov '91..?: much improved emacs mode
ala at&t ksh, 386bsd port, sigaction routines for non-POSIX systems
(see misc/ChangeLog.sjg and misc/ReadME.sjg).
* Peter Collinson (pc@hillside.co.uk), July '92: added select, at&t ksh
style history file, original csh-style {} globbing, BSD/386 port,
misc bug fixes.
* Larry Bouzane (larry@compusult.nf.ca), Mar '89..'93: re-wrote job control,
added async job notification, added CDPATH and other cd fixes, misc bug
fixes.
* John Rochester (jr@cs.mun.ca), '87: wrote vi command line editor; various
bug fixes/enhancements.
* Jeff Sparkes (jsparkes@bnr.ca), Mar '89..Mar '90: added arrays,
merged John Rochester's vi code into pdksh, misc bug fixes.
* Michael Haardt (u31b3hs@POOL.Informatik.RWTH-Aachen.DE), Sept '94:
organized man page, filled in many of its copious blank spots; added
KSH ifdefs.
* Dale DePriest (daled@cadence.com): ported to OS/2 (initially based on
port of pdksh4.9 to OS/2 by Kai Rommel (rommel@ars.muc.de)); maintains
OS/2 port; misc bug fixes.
Other contributors:
* Piercarlo Grandi (pcg@aber.ac.uk), Dec '93: fixes for linux port
* Neil Smithline (Neil.Smithline@eng.sun.com), Aug '92: emacs-style
filename completion.
* Mike Jetzer [mlj] (jetzer@studsys.mscs.mu.edu), ?;Nov '94: fixes for vi
mode (see misc/Changes.mlj), added v to vi, fixes for history; fixed
command redoing in vi; fixes to vi globbing.
* Robert J Gibson: mailbox checking code that was adapted for pdksh by
John R. MacMillan.
* ? (guy@demon.co.uk), ?: promptlen() function.
* J.T. Conklin (jtc@cygnus.com): POSIXized test builtin; miscellaneous
fixes/enhancements.
* Sean Hogan (sean@neweast.ca): fixes for ICS 3.0 Unix, found and helped
fix numerous problems.
* Gordan Larson (hoh@approve.se): fix to compile sans VI, ksh.1 typo.
* Thomas Gellekum (thomas@ghpc8.ihf.rwth-aachen.de): fixes for Makefile
typos, fixed CLK_TCK for FreeBSD, man page fixes.
* Ed Ferguson (Ed.Ferguson@dseg.ti.com): fix to compile sans VI.
* Brian Campbell (brianc@qnx.com): fixes to compile under QNX and
to compile with dmake.
* (guy@netapp.com), Oct '94: patch to use gmacs flag.
* Andrew Moore (alm@netcom.com): reported many bugs, fixes.
* William Bader (wbader@CSEE.Lehigh.Edu): fix to compile on SCO Unix
(strut winsize).
* Mike Long (mike.long@analog.com): makefile fix - use $manext, not 1.
* Art Mills (aem@hpbs9162.bio.hp.com): bug fix for vi file completion in
command mode.
* Tory Bollinger (tboll@authstin.ibm.com): allow ~ in vi mode to take
a count.
* Frank Edwards (<crash@azhrei.EEC.COM>): added macros to vi (@char).
* Fritz Heinrichmeyer (<Fritz.Heinrichmeyer@FernUni-Hagen.de>): fixes
to allow compile under Linux 1.4.3.
* Gabor Zahemszky (<zgabor@CoDe.hu>): SVR3_PGRP vs SYSV_PGRP, many
bug reports and man page fixes.
* Dave Kinchlea (<kinch@julian.uwo.ca>): DEFAULT_ENV patches.
* Paul Borman (<prb@bsdi.com>): j_exit: send HUP, then CONT; HUP fg process.
* DaviD W. Sanderson (<dws@ssec.wisc.edu>): patches to allow { .. } instead
of in .. esac in case statements.
* ? (<ra@rhi.hi.is>): partial patches to handle SIGWINCH for command line
editing.
* Jason Tyler (<jason@nc.bhpese.oz.au>): fixes for bugs in fc.
* Stefan Dalibor (<Stefan.Dalibor@informatik.uni-erlangen.de>): fix for
COLUMNS never being set in x_init().
* Arnon Kanfi (<arnon@gilly.datatools.com>): fix for prompt.
* Marc Olzheim (<marcolz@stack.nl>): patches to ifdef KSH the mail check
code and aliases; enum patches for old K&R compilers; handle missing dup2.
* Lars Hecking (<lhecking@nmrc.ucc.ie>): fixes so shell compiles as sh
again.
* Bill Kish (<kish@browncow.com>): added prompt delimiter hack for
hidden characters (eg, escape codes).
* Andrew S. Townley (<atownley@informix.com>): fixes for NeXT machines:
get a controlling if one needed, use correct profile.
* Eric J. Chet (<ejc@bazzle.com>): fix for core dump in . (quitenv() called
too soon).
* Greg A. Woods <woods@most.weird.com>: fix to make ^[_ in emacs work
as in at&t ksh.
* George Robbins <grr@shandakor.tharsis.com>: fix for sh mode to
keep exec'd file descriptors open.
* George White <gwhite@bodnext.bio.dfo.ca>: fix here-doc problem under OS/2
(memory allocated incorrectly).
* David E. Wexelblat <dwex@DataFocus.com>: fix to avoid memory overrun
in aresize(); fix to not print un-named options.
* Clifford Wolf (<clifford@clifford.at>): fix memory overrun in aresize();
fixed sys_siglist[] problem.
* Theo de Raadt (<deraadt@cvs.openbsd.org>): allow ". /dev/null".
* Eric Youngdale (<ericy@datafocus.com>): flag field incorrectly changed
in exec.c(flushcom).
* Todd. C Miller (Todd C. Miller <Todd.Miller@courtesan.com>): fix
for coredump in jobs.
* Kevin Schoedel <schoedel@kw.igs.net>: fix for word location in file
completion.
* Martin Lucina <mato@kotelna.sk>: fix for argument parsing in exit command,
fix for KSH_CHECK_H_TYPE.
* Mark Funkenhauser <mark@interix.com>: added $LINENO support.
* Corinna Vinschen <Corinna@Vinschen.de> and Steven Hein <ssh@sgi.com>:
port to cyngin environment on win95/winnt.
* Martin Dalecki <dalecki@cs.net.pl>: changes for 8 bit emacs mode.
* Dave Hillman <daveh@gte.net>: patch for bug in test -nt.

1600
ChangeLog

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

151
INSTALL
View File

@ -1,151 +0,0 @@
$OpenBSD: INSTALL,v 1.1.1.1 1996/08/14 06:19:10 downsj Exp $
[This file is the generic GNU autoconf/configure installation description,
see the README for pdksh specific configuration/installation information]
This is a generic INSTALL file for utilities distributions.
If this package does not come with, e.g., installable documentation or
data files, please ignore the references to them below.
The `configure' shell script attempts to guess correct values for
various system-dependent variables used during compilation, and
creates the Makefile(s) (one in each subdirectory of the source
directory). In some packages it creates a C header file containing
system-dependent definitions. It also creates a file `config.status'
that you can run in the future to recreate the current configuration.
To compile this package:
1. Configure the package for your system.
Normally, you just `cd' to the directory containing the package's
source code and type `./configure'. If you're using `csh' on an old
version of System V, you might need to type `sh configure' instead to
prevent `csh' from trying to execute `configure' itself.
Running `configure' takes awhile. While it is running, it
prints some messages that tell what it is doing. If you don't want to
see any messages, run `configure' with its standard output redirected
to `/dev/null'; for example, `./configure >/dev/null'.
To compile the package in a different directory from the one
containing the source code, you must use a version of `make' that
supports the `VPATH' variable, such as GNU `make'. `cd' to the
directory where you want the object files and executables to go and run
the `configure' script. `configure' automatically checks for the
source code in the directory that `configure' is in and in `..'. If
for some reason `configure' is not in the source code directory that
you are configuring, then it will report that it can't find the source
code. In that case, run `configure' with the option `--srcdir=DIR',
where DIR is the directory that contains the source code.
By default, `make install' will install the package's files in
`/usr/local/bin', `/usr/local/man', etc. You can specify an
installation prefix other than `/usr/local' by giving `configure' the
option `--prefix=PATH'. Alternately, you can do so by consistently
giving a value for the `prefix' variable when you run `make', e.g.,
make prefix=/usr/gnu
make prefix=/usr/gnu install
You can specify separate installation prefixes for
architecture-specific files and architecture-independent files. If you
give `configure' the option `--exec-prefix=PATH' or set the `make'
variable `exec_prefix' to PATH, the package will use PATH as the prefix
for installing programs and libraries. Data files and documentation
will still use the regular prefix. Normally, all files are installed
using the same prefix.
Some packages pay attention to `--with-PACKAGE' options to
`configure', where PACKAGE is something like `gnu-as' or `x' (for the
X Window System). They may also pay attention to `--enable-FEATURE'
options, where FEATURE indicates an optional part of the package. The
README should mention any `--with-' and `--enable-' options that the
package recognizes.
`configure' also recognizes the following options:
`--help'
Print a summary of the options to `configure', and exit.
`--quiet'
`--silent'
Do not print messages saying which checks are being made.
`--verbose'
Print the results of the checks.
`--version'
Print the version of Autoconf used to generate the `configure'
script, and exit.
`--x-includes=DIR'
X include files are in DIR.
`--x-libraries=DIR'
X library files are in DIR.
`configure' also accepts and ignores some other options.
On systems that require unusual options for compilation or linking
that the package's `configure' script does not know about, you can give
`configure' initial values for variables by setting them in the
environment. In Bourne-compatible shells, you can do that on the
command line like this:
CC='gcc -traditional' LIBS=-lposix ./configure
On systems that have the `env' program, you can do it like this:
env CC='gcc -traditional' LIBS=-lposix ./configure
Here are the `make' variables that you might want to override with
environment variables when running `configure'.
For these variables, any value given in the environment overrides the
value that `configure' would choose:
- Variable: CC
C compiler program. The default is `cc'.
- Variable: INSTALL
Program to use to install files. The default is `install' if you
have it, `cp' otherwise.
For these variables, any value given in the environment is added to
the value that `configure' chooses:
- Variable: DEFS
Configuration options, in the form `-Dfoo -Dbar...'. Do not use
this variable in packages that create a configuration header file.
- Variable: LIBS
Libraries to link with, in the form `-lfoo -lbar...'.
If you need to do unusual things to compile the package, we encourage
you to figure out how `configure' could check whether to do them, and
mail diffs or instructions to the address given in the README so we
can include them in the next release.
2. Type `make' to compile the package. If you want, you can override
the `make' variables CFLAGS and LDFLAGS like this:
make CFLAGS=-O2 LDFLAGS=-s
3. If the package comes with self-tests and you want to run them,
type `make check'. If you're not sure whether there are any, try it;
if `make' responds with something like
make: *** No way to make target `check'. Stop.
then the package does not come with self-tests.
4. Type `make install' to install programs, data files, and
documentation.
5. You can remove the program binaries and object files from the
source directory by typing `make clean'. To also remove the
Makefile(s), the header file containing system-dependent definitions
(if the package uses one), and `config.status' (all the files that
`configure' created), type `make distclean'.
The file `configure.in' is used to create `configure' by a program
called `autoconf'. You only need it if you want to regenerate
`configure' using a newer version of `autoconf'.

662
NEWS
View File

@ -1,662 +0,0 @@
Version 5.2.14
* bug fixes
* test: -nt(-ot) now succeed if second (first) file doesn't exist and the
other does.
* time: now accepts the -p (posix) option.
* vi: failed redo (.) commands no longer return the line to the shell.
* emacs: bind commands in .profile/$ENV no longer overridden by tty
settings.
* heredocs: now saved in memory to avoid temp files disappear too soon.
* time: commands at the end of a pipeline can now be timed.
* on startup: MAILCHECK,TMOUT,SECONDS values from environment are honoured.
* trap: exit traps now executed in subshells (without explicit exit call).
* eval: if given empty command while in non-posix mode, exit status is
that of last command substitution (if any).
* trap: if first argument is "exit", it is taken as a command not a signal.
* pwd: config test & code to work around bug in hpux 10.x getcwd().
* RANDOM: seed based on both time and pid; different sequence in sub shells.
* typeset -f: now pretty-prints $(..) and $((..)) correctly.
* fixed bug in memory allocation which can lead to core dumps.
* set -o: no longer prints options that have no names.
* emacs: <esc>. in very fist command no longer dumps core.
* .: can now dot non-regular files (eg, /dev/null).
* parsing: bar(); no longer dumps core when function bar is run.
* variable substitution: ${#array[*]} now prints number of set elements
in the array (used to print largest index, not what ksh88 did).
* job control: resuming suspended gnu su no longer hoses su'd shell.
* job control: fixed possible core dump when waiting for jobs.
* LINENO variable now supported.
* port to cygwin environment on win95/winnt.
Version 5.2.13
* bug fixes
* functions: $0 in sh-style functions is now the same as the shell's $0.
* .: fixed possible core dump on clean up.
* test: a lone -t argument now does a isatty(1) test if not in posix mode.
* alias: PS2 no longer printed when expanding alias foo="cmd; ".
* set/typeset/getopts: can have options prefixed with both + and -.
* typeset -f: now reproduces functions correctly ("function F" vs "F()").
* alias: options can start with +.
* set -A: a -- marking end of options is now skipped.
* errexit option (-e) ignored when reading profile and $ENV files.
* test: '-x f' now fails for root if f is a file and has no x bits set.
* $_: set to last arg in interactive shells only.
* PATH: if $PATH not set on startup, it is set to the default path.
* extended globbing: allow (pat|pat) within @(...) and ${foo#...} patterns.
* emacs: ^[_ now behaves as it does in at&t ksh (word from _last_ command).
* MAIL/MAILCHECK: fixed bug that prevented the `new mail' messages.
* ${..%..} and ${..#..} now work if compiled as sh.
* sh: fd's greater than 2 are passed on to executed commands.
* syntax: accepts "if (( 1 )) then" (also [[ ]]): no ; required before then.
* substitution: accepts (and ignores) leading : in %, %%, #, ## substitions.
* .: doting directories no longer allowed.
* editing: completion after "cmd " now completes files (was command).
$OpenBSD: NEWS,v 1.12 2003/02/28 09:45:09 jmc Exp $
Version 5.2.12
* bug fixes
* editing: shell recognizes window resizes on Dec alphas (config problem).
* alias: no longer dumps core if alias is in a command substitution.
* alias: everything after ;\n or \n\n was ignored in aliases.
* exec: temp files used by here docs in functions now cleaned up on exec.
* possible core dump when cleaning up environment fixed.
* vi: set -o vi-show8 now does what it was supposed to do (cat -v like).
* job control: process group synchronization (needed on systems with
broken setpgrp()) now works when the pipeline contains built in commands.
* vi: if set -o vi-tabcomplete, tab works in command mode as well.
* set/typeset: unset parameters are only reported if they have attributes.
Version 5.2.11
* bug fixes
* aliases: expansion was reading an extra character (bug added in 5.2.10).
Version 5.2.10
* bug fixes
* parsing: handling of backslash-newline fixed (esp. in here documents).
* read: prints prompt if non-interactive and input is a tty.
Version 5.2.9
* bug fixes
* config: using LDSTATIC no longer generates config error.
* config: can compile as sh again (--enable-shell=sh).
* config: should compile on machines with broken "gcc -g"
* config: fixed test for broken S_IFIFO.
* config: fixed test for getwd() routine.
* config: better NeXT support (signal list generated correctly, clock_t
type detected, enable job control in rlogin sessions)
* parsing: assignments containing brackets ([]) not treated as commands.
* editing: terminal column width determined correctly on startup.
* vi: long prompts truncated (more or less) correctly.
* file completion: files of the form ~user (no /'s) expanded correctly.
* at&t ksh method for delimiting hidden characters in prompt added (i.e.,
start prompt with non-printing char and \r, use char to delimit esc codes).
Version 5.2.8
* bug fixes
* configuration: handle FreeBSD's strange S_ISSOCK.
* test: added == operator.
* configuration: fixed opendir/dirent usage.
* redirections before subshells handled correctly.
* COLUMNS/LINES are no longer exported when they are automatically set.
* mail checks and PS1/PS4 expansions removed if compiled as sh.
* subcommands in PS1 no longer generate bogus warning messages.
* environment variables not longer messed up on 16-bit machines.
* unset: now returns non-zero if variable/function isn't set.
* select: only prints menu first time, if REPLY is null or on blank line.
* check for `cannot execute' improved, error message says why.
* typeset: now reports variables with attributes but now value.
* vi/emacs file completion: does directory listing on zero length names.
* arithmetic: non-numeric parameters expanded recursively.
* arithmetic: identifiers in unevaluated part of ?:,&&,|| parsed correctly.
* functions: unsetting a function within itself is now safe.
* arrays: unsetting element 0 of an array no longer kills the whole array.
* co-processes now behave like ksh93 co-processes (and less like ksh88).
* functions declared with "function foo" are treated differently (from those
declared with "foo()"): $0 is (not) set to the function name, assignments
before function calls aren't (are) kept in the parent shell.
* vi: added vi-esccomplete option for people who want ESC-ESC completion.
* vi/emacs: now notice window size changes (but not while editing a line).
* emacs: <esc># now does the comment/uncomment thing.
* arithmetic: ++, -- and , added.
Version 5.2.7
* bug fixes
* vi: commands can be longer that 16 chars...
Version 5.2.6
* bug fixes
* break/continue: if too big a number is given, last enclosing loop is used.
* set: set +o now generates a set command that can be saved and executed.
* COLUMNS/LINES are now exported when they are automatically set.
* emacs: completion: space not added after directory names.
* vi: # command inserts # after each newline; # on commented line
undoes the commenting.
* some regression tests made less sensitive to their environment.
* should compile on os/2 again.
Version 5.2.5
* bug fixes
* configuration: if sig_setjmp() being used, use sigjmp_buf.
* configuration: test for times() fixed.
* configuration: ANSI usage of setjmp() and offsetof().
* echo/print: octal number in \ sequence must start with a 0.
* echo: don't treat a lone minus as an option.
* typeset -f: correctly prints functions with select statements.
* vi: / with no pattern repeats last search.
* vi: repeat counts no longer effect file completion/expansion.
* vi: tab-completion now also works in command mode.
* emacs/vi: ^O key now read as ^O on suns/alphas (was eaten by tty driver).
* emacs: now has file expansion (^[*).
* emacs: ^O goes to next command, not next next command.
* COLUMNS/LINES: environment variables now set on start up.
* variables: command line assignments can't change readonly variables.
* arithmetic: giving multiple bases (5#4#3) no longer allowed.
* arithmetic: when assigning a non-integer variables, base no longer shown.
* history: fixed replacement bug introduced in last release.
* history: -1 refers to the previous command, not current fc command.
* parsing: correctly handles command substitutions starting with a newline.
* full command completion added (both vi and emacs).
Version 5.2.4
* bug fixes
* PS1 imported from environment again.
* vi handles prompts with embedded newlines.
* errors redirecting stderr aren't lost.
* redirection errors for <&n no longer reported as to >&n.
* don't do globbing on re-direction targets if not interactive (POSIX).
* pattern matching in [[ foo = foo*bar ]] now works again.
* HUP signals are passed on to jobs running in the foreground.
* $? now valid (ie, not 0) in trap handlers, `...` expressions, etc.
* noclobber doesn't effect redirections to non-regular files (eg, /dev/null)
* \newline in here-document delimiters handled correctly.
* typeset -f now reports unloaded autoload functions properly.
* ~,~+,~- are not expanded if HOME,PWD,OLDPWD are unset.
* vi completion/expansion: * not appeded if word contains $.
* cd: error message contains correct directory string.
* vi expansion list: printed in column form ala at&t ksh.
* ^C while reading .profile/$ENV nolonger causes shell to exit.
* option errors for build-in commands now include command name.
* emacs completion/expansion: ' and " are treated as word delimiters.
* fc: replacements (a=b) no longer truncates the command.
* alias: alias -t -r now cleans out the tracked alias table.
* compile-time configuration changed: configure script --enable-XXX options
replace the old options.h file. Use "configure --help" for information
on what the options do (they are basicly the same as what was in the
options.h file). Shell can be configured as a (almost) plain bourne
shell using the --enable-shell=sh (also generates appropriate man page).
Installed name of program (ksh or sh) can be modified using configure's
--program-* options.
* ulimit: added -p (maxproc) option.
* case statements can use the old syntax of {,} instead of in,esac.
* extended file globbing added (eg, f*(bar|Bar) matches f, fbar fBarbar, etc).
* trim expressions can be of the form ${parameter#pattern1|pattern2|...}.
* if compiled as sh, $ENV included only if posix option is set.
* vi: U command added (undo all changes on line).
* the Bugs script has been replaced by a new regression testing system, kept
in the tests/ directory (contains a perl script which sets up a test
environment and runs tests, and a bunch of tests).
Version 5.2.3
* bug fixes
* arrays: set -A and unset now unset whole array.
* history(complex version): fixed core caused by uninitialized hist_source.
* getopts: will continue parsing options if called after error.
* getopts: doesn't print shell name twice in error message.
* posix: if posix option is set, $0 is always the name of the shell.
* history: "fc -s foo" now finds foo if it is the most recent command.
* let: expression errors no longer cause scripts to exit.
* PS1: does not go into infinite loop if there is an expansion error.
* configure: memmove/bcopy test has a change of working now.
* configure: check for flock(), undefine COMPLEX_HISTORY if not found.
* substitution: tilde substitution works in word part of ${var[-+=?]word}.
* history: "fc <number>" now edits <number>, not <number> to most recent.
* cd: two argument form works again.
* special commands taking assignments (alias,set,etc.): field splitting,
file globbing, etc. suppressed only for args that look like assignments.
* command: -V now finds reserved words.
* added support for Korn's /dev/fd tests
* new compile time option: DEFAULT_ENV - if defined, it names a file to
include if $ENV is not set.
* test -o option: if option starts with a !, the test is negated. The test
always fails if the option doesn't exist (so [ -o foo -o -o !foo ] is true
iff option foo exists).
* new option: set -o nohup (currently on by default) - if set, running jobs
are not kill -HUP'd when a login shell exits; if clear, they are. In
future, this will be clear by default (to act like at&t ksh) - if you don't
(won't) like this, add "[ -o !nohup ] && set -o nohup" to your .profile.
Version 5.2.2
* bug fixes
* included c_test.h in distribution (opps).
Version 5.2.1
* bug fixes
* emacs: buffer no longer overflowed when completing file names/commands.
* emacs: <ESC><tty-erase-char> now bound to delete-back-word (was ...-char).
* emacs: ignores a space char after ^V (version), as in at&t ksh.
* emacs: ^O bound to newline-and-next, ^X^Y bound to list-file.
* emacs: emacs words now include underscore.
* vi: set -o markdirs, directories and ^[= now get along.
* cd: -P no longer leaves .. and . in PWD.
* cd: if CDPATH set and can't cd, error doesn't contain any of CDPATH.
* cd: sets PWD properly, on machines without getwd().
* configuration: unistd.h test fixed (include sys/types before dirent.h).
* configuration: detects memmove/bcopy's that don't handle overlaps.
* [[ ... ]] does lazy evaluation (eg, [[ ! -f foo || $(<foo) = bar ]] does
not evaluate $(<foo) if foo doesn't exist).
Version 5.2.0
* bug fixes
* vi: completion now allows globbing characters.
* vi: can deal with very long prompts.
* vi: . (redo) works after j, k, return.
* vi: [dyc]% causing backwards motion now gets correct start/end position.
* vi: complete_word (<ESC>\) no longer rings bell on ambiguous matches.
* vi: globbing doesn't append * if last component of file has globbing chars.
* emacs: most commands now take arguments, arguments can be multi digit.
* emacs: newline-and-next command works more correctly.
* after set -u, trimming substitutions no longer automatically fail.
* set -i no longer reports an internal error.
* FPATH: no longer incorrectly complains about function not being defined.
by a file; when it connectly complains, shell name in error is correct.
* set -a; set -o allexport: these now do something.
* shell deals with non-blocking input (clears non-blocking flag).
* autoconf: fixed memmove/memcpy tests.
* ! translation in prompt now done before parameter substitution.
* siglist.sh works around bug in bash 1.4.3.
* correct positional parameters accessible in local assignments.
* (sleep 100&) no longer waits for sleep to complete.
* fc -s option added (same as -e -).
* vi: ^V command (version) added.
* vi: @<char> macros added (@X executes vi commands in alias _X).
* emacs: bind -l lists all command names.
* emacs: goto-history command added.
* emacs: search-char function changed to search-char-forward;
added search-char-backward (bound to <ESC>^]).
* cd and pwd take -L and -P options; added set -o physical option
(PWD,OLDPWD no longer readonly).
* new command line -l option tells shell it is a login session.
* os2 changes completed.
* uses autoconf 2.x (was using 1.x).
Version 5.1.3
* bug fixes
* fixed bug in arithmetic expression evaluation (||,&& caused core dump).
* ulimit code now uses rlim_t or quad_t, if appropriate.
* vi: file completion in command mode of single character filename works.
* vi: file completion with markdirs set resulted in two trailing /'s.
* vi: completion/expansion/listing acts like at&t ksh when expand fails.
* vi: ~ takes count.
* lines from history file are no longer negative (easy history).
* Makefile now uses manual extension consistently.
* fc now allows out of range relative (negative) numbers.
* functions with elif now printed correctly.
* FPATH now searched if PATH search fails, as in at&t ksh.
* typeset -f output is readable (and more correct)
* compiles under SCO unix
* more os/2 changes integrated
Version 5.1.2
* bug fixes
* for i; do ...; done now accepted.
* leading non-white-space IFS chars no longer ignored (now delimit fields).
* fixed globbing code so echo /usr/*/make works.
Version 5.1.1
* bug fixes
* { ..;} allowed instead of do ..;done in for/select loops
* EOF after ; or & no longer causes syntax error
* complex history: when shrinking history file, keeps inside buffer space.
* vi editing: `v' on modified line no longer changes command numbering.
* ^C in vi/emacs no longer prints two newlines.
* long arguments (> 255) with globbing characters don't cause core dumps.
* new (un)option, KSH, which compiles out ksh code (for producing minimal sh).
* os/2 changes partly merged.
Version 5.1.0
* bug fixes
* problem caused by _POSIX_VDISABLE on BSDI machines fixed
* exit status set to 127 if command file could not be opened
* profile files processed if basename argv[0] starts with (was $0)
* PWD now imported properly from environment.
* emacs code now either uses dynamic buffers or does overflow checking.
* emacs forward-word and delete-forward-word now work like other emacs's.
* ^C/^\ in vi/emacs work like at&t ksh (prompt reprinted, even if trapped).
* history number to command mapping now constant (numbers used to change).
* configuration: BSD tty now used on ultrix (avoids type ahead problem)
* eof in the middle of multiline commands now ignored if ignoreeof set.
* vi space command now works again.
* pointer mismatch compiler warning for waitpid() call dealt with.
* emacs internal memory error in command completion fixed.
* autoloaded functions now work first try.
* SECONDS parameter now acts like in at&t ksh.
* sense of vi-show8 option changed: 8-bit characters are printed as is by
default; turning on vi-show8 now causes chars with 8th bit set to be
prefixed with M-.
* missing sections in man page added (now basicly complete)
* emacs ^V command added: prints ksh version
* vi g command added: moves to most recent history
Version 5.0.10
* bug fixes
* [[ ]] construct unbroken.
* the newline after a here document marker is now read properly.
* blank lines no longer cause $? to be set to 0.
* mail checking now uses atime/mtime instead of size.
* changing attributes of exported parameters no longer causes core dump.
* the last command in a file does not have to end in a newline.
* empty expressions now treated as 0 (previously generated an error).
* nul bytes stripped from input.
* 0241 (M-!) in a command substitution no longer lost.
* when read used in startup file, line continuation no longer causes crash.
* very long commands in history no longer cause vi to overwrite memory.
* easy history: when saving history, avoid going past the end of history.
* emacs mode no longer entered if EDITOR/VISUAL set to null string.
* command -p disabled in restricted mode.
* closed file descriptors are re-closed after a redirection.
* lone [ (test command) no longer causes globbing code to search directory.
* if TIMES_BROKEN is defined, ksh_times no longer recurses infinitely.
* `r r' no longer repeats r command forever.
* make depend no longer generates backslash followed by a blank line.
* globbing code now deals with symlinks that point to non-existent files.
* if the ] is missing in a pattern, the [ matches the [ character.
* syntax errors in test no longer have two newlines.
* in vi, G now goes to the oldest history (was newest).
* configuration: test for sys_siglist now harder for optimizers to break.
* configuration: look for clock_t in sys/times.h.
* configuration: use _SIGMAX, if available, for # of signals.
* SIGHUP now causes builtin read command to exit.
* wait builtin now returns whenever a traped signal occurs as per POSIX.
* v command now works in vi; anchored searches now work in vi mode (/^ptrn);
multi-line commands displayed correctly by history.
* echo is now schizophrenic: accepts -n/-e/-E and backslash sequences.
* test -H file added (checks for context dependent files on HPs).
* set -o gmacs and markdirs honoured.
* ansi arrow keys in default emacs key bindings.
* ulimit now takes arithmetic expression (as per Korn book).
* co-processes changed to be more compatible with at&t ksh.
Version 5.0.9
* bug fixes
* FOO is put in the environment for FOO=bar exec blah.
* compiles under QNX and with dmake.
* the file pattern [!a--]* is now invalid (POSIX) (used to match everything)
* echo "${foo:-"a"}*" no longer the same as echo a*.
* alternation (brace expansion) fixes:
* brace expansion done after variable expansion, as in csh/at&t ksh.
* `echo a{b,c' no longer gives "Missing }" error (it echos a{b,c).
* expansion only done if there is a comma (ie, `echo {a}' prints {a}).
* globbing/expansion code passes 0x80 unharmed.
* "echo ${XX=a*b}" no longer sets XX to "a\200*b".
* "echo ${unset-a*b}" no longer has \200 in the error message.
* bad substitution error generated for things like ${x:a}, ${x^a}, etc.
* `x="a cdef"; echo ${x#a c}' now prints "def" instead of "a a cdef".
* on systems where /etc/passwd//// is a valid name, echo /etc/pass*/ no
longer matches /etc/passwd.
* trace output (set -x) flushed correctly, PS4 initialized.
* ulimit output ungarbled, code to use {set,get}ulimit (if available)
enabled.
* tilde expansion done in word part of ${foo-~/bar}
* when reading stdin (ie, ksh -s), no longer reads too much.
* shell handles i/o redirection and errors in builtin commands as per
POSIX (still have to sort out variable assignment errors).
* starting jobs that save/change/restore tty settings in the background
no longer messes up tty settings when job finishes.
* the pattern [a'-'z] now matches three characters, not 26, and
the pattern [ab']'] also matches three characters.
* a mostly complete man page! (work is still in progress)
* quoting inside $(..) mostly works.
* error reporting has been orthogonalized.
* brace expansion on by default (can be disabled with set +o braceexpand, or
set -o posix).
* output of "set -o" now fits on a normal screen.
* co-processes added (|&, read -p, print -p, etc.).
* restricted mode added (for what its worth).
* vi now prints meta characters with M- prefix, unless vi-show8 option is on.
Version 5.0.8
* bug fixes
* two problems in fc (introduced in 5.0.7)
* install target in Makefile missing a dollar
Version 5.0.7
* POSIX command command added
* a few bug fixes
* now compiles with various options undefined (eg, VI, EMACS, JOBS).
* fixed typos in Makefile.in (maxext -> manext) and ksh.1 (\f -> \fP).
* CLK_TCK defined to correct value for FreeBSD 1.1.5 (and earlier?).
* original process group restored when an exec is done.
* the exit value of set is that of the last $(...) on the command line.
* ditto for a command with no command (eg, x=`false`).
* command variable assignments done before path search (so PATH=... x works)
and are added as they are processed (so A=1 B=$A works).
* variable assignments infront of function calls are exported to programs
inside the function.
* aliases with trailing space are only honoured in command contexts
if in posix mode.
* make depend target added; install target warns if ksh not in /etc/shells.
* set -o bgnice now does something.
* vi mode: ESC is no longer a file completion command (too annoying).
Version 5.0.6
* most reported bugs/problems fixed (all but two).
* temporary files now created in $TMPDIR (if it is a sane path).
Version 5.0.5
* function parsing POSIXized (function bodies can be any compound command,
redirections after functions effect function invocation, not the
instantiation, the () in a function definition now parsed as two tokens).
* exit bultin now does stopped jobs check.
* set -p/-o priviliged supported.
* test builtin now believed to be completely posix.
* a default path is now used when PATH is not set (defined in options.h).
Version 5.0.4
* configuration checks for buggy opendir()s and setpgrp()s.
* autoloading functions now supported.
* functions can safely redefine themselves.
Version 5.0.3
* hash command changed to "alias -t"; whence -p added; print -s added
(all as in at&t ksh); unalias -a added (POSIX).
* test builtin POSIX complient
* TMOUT parameter supported (at&t ksh: timeout interactive shells)
Version 5.0.2
* trap/error handling changed to eliminate longjmp()s from signal handlers;
trap ERR added.
* ksh conditional expressions ([[ .. ]]) supported.
* arithmetic expressions (let, $((..)), etc.) now understand full C
integer expressions (except ++/-- and sizeof()).
* typeset -L -R -Z -u -l added (as in at&t ksh)
* at&t/posix $(( .. )) arithmetic expansions supported.
Version 5.0.1
* set -e no longer effects commands executed as part of if/while/until/&&/||/!
condition.
* posix ! keyword now recognized.
* posix getopts; if not in posix mode, getopts will accept options starting
with + (at&t kshism)
* syntax error messages improved (says what was unexpected/unmatched)
Version 4.9+mun.5
* all known bugs related to job control fixed:
* fg,bg,jobs,wait,kill commands fully POSIX complient
* signals are no longer reported for foreground jobs killed by SIGINT and
SIGPIPE
* pipeline process groups now created more reliablely (was a problem
if first process exited before second process exec'd).
* "(: ; cat /etc/termcap) | sleep" nolonger hangs
* save/restore tty mode if command succeeds/fails, respectively. Edit
mode (emacs,vi) no longer use old tty mode information
* test command: added -h
* alternations option renamed to braceexpand (eg, use set -o braceexpand).
Old usage (set -o alternations) still accepted (will disappear in next
version).
* trap/kill now accept upper and lower case signal names.
Version 4.9+mun.3
* here documents in functions now work properly
* read command: added -s option, use REPLY if no variable specified
* don't accept "while command; done" as a valid command
* fg,bg,jobs,wait,kill commands mostly POSIX complient.
* unset command: added POSIX -v option
* set command: added -A option
* handle ${array[@]} and ${array[*]}
* compiles with old bsd 4.2 compiler (pcc)
* new versions of etc/profile and etc/ksh.profile
Version 4.9+mun.2 (versus 4.9)
* directory/file structure has been re-arranged:
* moved files from sh directory up a level, deleted sh directory
* created misc directory, old ChangeLog,README,.. files moved to misc
* now uses GNU autoconf for compilation.
* no longer uses stdio FILE *'s for I/O redirection (most stdio
usage has been removed). Solves many porting problems caused by
dup'd file descriptors, forked processes and exiting.
* removed lint from code (compiles with very few warning with gcc -O -Wall
-Wno-comment)
* has array support (needs work but is pretty functional).
* ulimit command now more functional on more machines. Compatible with at&t ksh.
* command line and set option parsing cleaned up, POSIXized.
* POSIX IFS handling.
* many many small bug fixes (see ChangeLog)

View File

@ -1,5 +1,5 @@
.\" $MirBSD: ksh.1tbl,v 1.7 2003/06/26 18:26:21 tg Exp $
.\" $OpenBSD: ksh.1tbl,v 1.53 2003/06/06 10:05:52 jmc Exp $
.\" $MirBSD: ksh.1tbl,v 1.8 2003/07/09 19:02:04 tg Exp $
.\" $OpenBSD: ksh.1tbl,v 1.54 2003/07/07 14:11:58 jmc Exp $
.\"
.\" Copyright (c) 1980, 1990, 1993
.\" The Regents of the University of California. All rights reserved.
@ -478,18 +478,16 @@ In the following compound command descriptions, command lists (denoted as
that are followed by reserved words must end with a semicolon, a newline, or
a (syntactically correct) reserved word.
For example,
.Pp
.Bl -inset -indent -compact
.It Ic { echo foo; echo bar; }
.It Ic { echo foo; echo bar<newline> }
.It Ic { { echo foo; echo bar; } }
.El
.Bd -unfilled -offset indent
.Ic { echo foo; echo bar; }
.Ic { echo foo; echo bar<newline> }
.Ic { { echo foo; echo bar; } }
.Ed
.Pp
are all valid, but
.Pp
.Bl -inset -indent -compact
.It Ic { echo foo; echo bar }
.El
.Bd -unfilled -offset -indent
.Ic { echo foo; echo bar }
.Ed
.Pp
is not.
.Bl -tag -width Ds
@ -726,7 +724,6 @@ Similar to the
and
.Ic \&[ Ar ... Ic \&]
commands (described later), with the following exceptions:
.Pp
.Bl -bullet -offset indent
.It
Field splitting and file name generation are not performed on arguments.
@ -744,15 +741,15 @@ and
respectively.
.It
Operators (e.g.,
.Ql Fl f ,
.Ql = ,
.Ql ! ,
.Sq Fl f ,
.Sq = ,
.Sq \&! ,
etc.) must be unquoted.
.It
The second operand of the
.Ql !=
.Sq !=
and
.Ql =
.Sq =
expressions are patterns (e.g., the comparison
.Ic [[ foobar = f*r ]]
succeeds).
@ -2020,7 +2017,6 @@ is a decimal integer specifying the base, and
is a number in the specified base.
.Pp
The operators are evaluated as follows:
.Pp
.Bl -tag -width Ds -offset indent
.It unary Ic \&+
Result is the argument (included for completeness).
@ -2495,9 +2491,9 @@ Test.
In
.Tn POSIX
mode, the expression
.Ql Fl t
.Sq Fl t
(preceded by some number of
.Ql Ic \&!
.Sq Ic \&!
arguments) is always true as it is a non-zero length string; in
.Pf non- Tn POSIX
mode, it tests if file descriptor 1 is a tty (i.e., the
@ -3058,7 +3054,7 @@ is syntactic sugar for
.Ic let \&" Ns Ar expr Ns Ic \&" .
.It Xo Ic print
.Oo Fl nprsu Ns Ar n No \&|
.Fl R No Op Fl en Oc
.Fl R Op Fl en Oc
.Op Ar argument ...
.Xc
.Ic print
@ -3699,9 +3695,9 @@ is
or unset, if it has embedded spaces (i.e.,
.Ev IFS
characters), or if it is a unary operator like
.Ql Ic \&!
.Sq Ic \&!
or
.Ql Fl n .
.Sq Fl n .
Use tests like
.Ic if \&[ \&"X$foo\&" = Xbar \&]
instead.
@ -4765,7 +4761,7 @@ Like
except if
.Ar n
is not specified, it goes to the most recent remembered line.
.It Ic Ar n Ns Ic v
.It Ar n Ns Ic v
Edit line
.Ar n
using the vi editor; if
@ -5060,7 +5056,6 @@ except the buffer is pasted at the current position.
.El
.Pp
Miscellaneous vi commands
.Pp
.Bl -tag -width Ds
.It Ic ^J No and Ic ^M
The current line is read, parsed, and executed by the shell.
@ -5077,6 +5072,7 @@ Undo all changes that have been made to the current line.
.It Ar intr No and Ar quit
The interrupt and quit terminal characters cause the current line to be
deleted and a new prompt to be printed.
.El
.Sh FILES
.Bl -tag -width "/etc/suid_profile" -compact
.It Pa ~/.profile