mksh/NEWS

663 lines
27 KiB
Plaintext

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.13 2003/10/22 07:40:38 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 trapped 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)