309 lines
16 KiB
Plaintext
309 lines
16 KiB
Plaintext
This is a list of changes that have been made since the 11/16/88 version
|
|
of ksh.
|
|
|
|
1. New features in 11/16/88[abcde]
|
|
a. All characters of alias names can contain non-special
|
|
characters, not just the first. A / is not a valid alias
|
|
character.
|
|
b. The vi % directive has been added to 11/16/88c
|
|
c. A new [[...]] -C option returns true for contiguous files.
|
|
This option returns false on systems that do not support
|
|
contiguous files.
|
|
d. Setting REPLY to the null string in a select command causes
|
|
the selection list to get refreshed in 11/16/88d.
|
|
e. Unary minus added for arithmetic expressions to increase
|
|
compatibility with system V test command.
|
|
f. Starting with 11/16/88e, The vi directive '#' has been changed
|
|
so that each line of the command is turned into a comment.
|
|
Also, if the first character of the command is a '#', the '#'
|
|
in front of each line is deleted.
|
|
g. The message for EOF with ignoreeof has changed in 11/16/88e.
|
|
h. A SOCKETS option has been added for machines with the BSD
|
|
socket calls so that scripts can connect to sockets via
|
|
redirection. See the README file for more details.
|
|
i. Starting with 11/16/88e, the behavior of 'ksh script' where
|
|
script is not a shell script has been changed. If ksh detects
|
|
that script is an a.out, a cannot exec error message is generated.
|
|
|
|
2. Bugs fixed in 11/16/88a for default OPTIONS
|
|
a. Files containing a \ were not matched correctly with patterns.
|
|
b. read without arguments no longer references location 0.
|
|
c. The value of integer exported variables was not inherited
|
|
correctly in some cases.
|
|
d. The characters ()|&\ in IFS did cause word splitting when ksh
|
|
expanded commands.
|
|
e. $! expanded to 0 before any background jobs were run, rather
|
|
than to the null string. The value of $! was not reset to
|
|
null when running a script by name.
|
|
f. On some machines, the shell would core dump if the variable
|
|
LINENO was exported.
|
|
g. The [[ ]] command did not handle multiple && and || without
|
|
parenthesis grouping.
|
|
h. On some BSD implementations, terminal setting were being
|
|
incorrectly reset when using vi-mode.
|
|
i. The execution of traps that write to standard output got
|
|
lost when the trap occurred while executing command substitution
|
|
of a built-in command.
|
|
j. The noclobber option now only applies to ordinary files.
|
|
k. The value of RANDOM changes when ksh creates a subshell.
|
|
l. Some syntax error messages had extra backslashes in them.
|
|
m. The expansion ${#name[number]} was not returning the string
|
|
length of array element number.
|
|
n. ksh did not work correctly in some cases when there was
|
|
no search permission in the current directory.
|
|
o. A pipeline would hang if the last element of the pipeline
|
|
was a shell construct that created a lot of child processes.
|
|
For example, cat file | while read line;do /bin/true;done
|
|
p. getopts has been fixed to agree with the description in
|
|
the man page. Previous ksh initialized OPTIND to 0, not 1,
|
|
and did not handle the case with a leading : as described.
|
|
q. If the name of the directory you are in contained a :,
|
|
a cd command to a relative pathname did always work correctly.
|
|
r. read -s now saves commands in the history file even when
|
|
read has been redirected from a file.
|
|
s. Some here documents containing command substitution with
|
|
a command that read from standard input didn't work
|
|
correctly.
|
|
t. (exec >&-; echo $(command) >&2) no longer runs command
|
|
with file descriptor 1 closed.
|
|
u. The <ESC>* command of vi and emacs inserted an extra
|
|
space when exactly one file matched.
|
|
v. A bug in vi edit mode caused a 'p' command to fail
|
|
after a 'D' command on some machines.
|
|
w. Reseeding the random number generator now guarantees
|
|
the same random sequence.
|
|
x. The results command substitution with built-in commands
|
|
that produced over 1K of output was sometimes incorrect.
|
|
y. set -A, without an argument, now produces an error message.
|
|
set -A name ... no longer causes the positional parameters
|
|
to be reset as an unintentional side effect.
|
|
z. Unterminated here-documents do not generate syntax errors
|
|
unless the -n option is on.
|
|
aa. Job control now works for functions as it did with ksh-i.
|
|
bb. The exit status of a pipeline whose last element is a built-in
|
|
command is now correct.
|
|
cc. ksh no longer dumps core when the last element of a pipeline
|
|
is a built-in command with an invalid parameter expansion.
|
|
dd. A trap on CHLD is no longer triggered by processes in the
|
|
current pipeline.
|
|
ee. One systems without readdir(), filename generation left
|
|
open files by mistake.
|
|
ff. traps ignored in a shell script were sometimes reset to
|
|
caught when functions were invoked.
|
|
gg. The trace (set -x ) of [[ x < y ]] and [[ x > y]] was incorrect.
|
|
hh. foobar() ; no longer core dumps.
|
|
ii. A trap on continue from within a select loop no correctly
|
|
when the trap occurs while reading from the terminal.
|
|
jj. The r command correctly handles numerical replacements so
|
|
that r 3=4 now works.
|
|
kk. Long lines (>3K) no longer causes a core dump with read.
|
|
ll. The command substitution $(name=value) no longer causes a
|
|
core dump.
|
|
mm. With the vi edit mode on some systems, extra characters were
|
|
left on the screen when the kill or erase characters were
|
|
preceded by a backslash.
|
|
nn. After a dot script that couldn't be found, a trap command
|
|
in a script could cause a core dump.
|
|
oo. Redirection with read of the form, read x <&3, was causing
|
|
the seek position on unit 3 to be positioned incorrectly.
|
|
pp. When an invalid alias name is given, ksh now prints the
|
|
correct error message.
|
|
qq. On systems with job control, if you escaped to a shell that
|
|
terminated abnormally, the calling process would hang.
|
|
|
|
3. Bugs fixed in 11/16/88b for default OPTIONS
|
|
a. ${x-"{a}"b} now expands to {a}b when x is not set.
|
|
b. ksh no longer core dumps with print -s when HISTFILE changed.
|
|
c. Tab stripping of numbered here-documents now works.
|
|
d. The deprecated, sh -t, now works the same as System V shell.
|
|
e. Attempting to list autoloaded functions no longer core dumps.
|
|
|
|
4. Bugs fixed in 11/16/88c for default OPTIONS
|
|
a. The process id for background jobs killed from scripts was
|
|
incorrect.
|
|
b. The wait built-in did not always return the correct value when
|
|
there was more than one background job.
|
|
c. ksh dumped core while in read with stderr redirected and in
|
|
emacs mode when it received an signal that had a trap set.
|
|
|
|
5. Bugs fixed in 11/16/88d for default OPTIONS
|
|
a. With the monitor option on with systems without job control,
|
|
login shells no longer print an extraneous 'running jobs'
|
|
message with a|b, where b is not found.
|
|
b. On systems where the behavior of the echo builtin depends
|
|
on the location of echo in the PATH variable, ksh no longer
|
|
core dumps if the PATH does not have a directory containing
|
|
an echo command.
|
|
c. return with an argument greater than 256 no longer causes
|
|
a core dump.
|
|
d. Tests on files whose names are null return false on all systems.
|
|
e. In some instances $0 was being incorrectly set after the
|
|
dot command was invoked with arguments inside a script.
|
|
f. The line number enclosed in [] when ksh reports a syntax error
|
|
has been corrected to be the first line of the command that
|
|
it is reading.
|
|
g. A trap on EXIT after a syntax error sometimes inserted an
|
|
extra character before the trap command text.
|
|
h. for i in ...; do echo ${i[@]};done no longer causes a subscript
|
|
error.
|
|
i. If the read built-in was interrupted, the terminal was not
|
|
always restored to the state it was in before read.
|
|
j. Output from background status changes with the monitor mode are
|
|
now written to standard error.
|
|
k. Executing a function interactively no longer causes SIGTERM
|
|
to be caught.
|
|
l. Using _ as an array variable no longer causes a core dump.
|
|
m. Unsetting a function more than once no longer causes core
|
|
dumps or other undesired side effects.
|
|
n. The code to process the substring operator ## was changed
|
|
so that the time was no longer quadratic in the length
|
|
of the string.
|
|
o. A bug that caused a job to disappear from the jobs table
|
|
after sending it a CONT signal has been fixed.
|
|
p. On systems where a null pathname is not the same as .,
|
|
the command 'cd .' would fail if the environment was cleared
|
|
before executing ksh.
|
|
q. In vi-mode, the screen did not always get refreshed correctly
|
|
when an insert followed a delete in front of a control character.
|
|
r. A bug in getopts that could cause a core dump when getopts
|
|
was called with fewer arguments on subsequent calls was fixed.
|
|
s. In vi-mode, ^V^M now enters ^M, not ^J on most systems.
|
|
t. On systems with job control, the kill command now sends out
|
|
SIGCONT signal after the signal has been sent, not before.
|
|
u. If the shell was interrupted while processing the .profile
|
|
file, the $ENV file was sometimes echoed to the terminal.
|
|
|
|
6. Bugs fixed in 11/16/88e for default OPTIONS
|
|
a. The code for item n from the d point release was omitted
|
|
but included in this release.
|
|
b. A script that uses edit modes now restores the terminal
|
|
modes with it receive a termination signal. Also, the
|
|
initial process group is restored for job control shells.
|
|
c. The standard input for background jobs was not set to
|
|
/dev/null in some cases where it should have been.
|
|
d. The value of $? now gets set correctly to indicate an
|
|
error after eval fails because of a syntax error.
|
|
e. The line discipline ^O bit is now cleared by ksh on some
|
|
systems that use sys/termios.h. Earlier versions only cleared
|
|
the ^O bit for BSD systems.
|
|
f. The suid_exec program has been modified to fix security
|
|
problems that could arise on systems that have symbolic links
|
|
but do not have the seteuid() system call.
|
|
g. The precedence for compound arithmetic assignment operators
|
|
such as *= was incorrectly set at the precedence of the
|
|
operator rather than the precedence for assignment.
|
|
h. The suspend character is now disabled when the last process of
|
|
a pipeline is not stoppable to prevent deadlock.
|
|
i. An extra secondary prompt was printed whenever a here-document
|
|
line contained a partial delimiter.
|
|
j. The EXIT trap will be executed for each function in the calling
|
|
chain when exit is called and when the maximum recursion level
|
|
(currently 128) is reached. Also return now behaves the same
|
|
as exit outside a function or a dot script and inside a subshell.
|
|
k. The value of $? no longer changes with a compound [[...]] command.
|
|
l. The jobs command now correctly reports 'no such job' when you
|
|
specify a pid that is not part of any running job.
|
|
m. The legal names for restricted shells have been reduced to
|
|
rsh, krsh, and rksh.
|
|
n. The vi, r, f, and @ directives now process ^V correctly. Also,
|
|
the r directive updates the screen correctly after you back
|
|
up to a control character and replace it with a non control char.
|
|
o. The command, $x > file, where x is not set, no longer core dumps.
|
|
p. When the read is redirected from a file it no longer issues the
|
|
secondary prompt when the line is continued with a \.
|
|
q. Variables that have attributes, but whose values are unset,
|
|
are now displayed with typeset, export, and readonly.
|
|
s. Set, without arguments, now displays the name-value pairs even
|
|
when preceded with a variable assignment list.
|
|
t. set -a now causes assignments of the form ${x=value} to get
|
|
the export attribute.
|
|
u. Arithmetic expansion, $((...)), inside here-documents no longer
|
|
causes subsequent parameter expansions to have extra \ inserted.
|
|
v. A bug that could cause the shell to go into an infinite
|
|
loop while creating the history has been fixed.
|
|
w. true and false are now built-in commands rather than aliases so
|
|
that correct results are produced when invoked with extraneous
|
|
arguments.
|
|
x. A tab character near the end of a long prompt no longer
|
|
causes the shell to hang.
|
|
y. An expansion of the form $((...)) is processed as an arithmetic
|
|
expansion only when the inner parenthesis match. Otherwise,
|
|
it will be processed as a nested command substitution.
|
|
z. Unsetting a function no longer causes the whence builtin to
|
|
give incorrect results for that name.
|
|
aa. Errors detected while expanding the PS1 prompt no longer
|
|
leave the shell in an undefined state.
|
|
bb. A bug that caused the shell to hang in read when a
|
|
coprocess (cmd |&) terminated has been fixed.
|
|
cc. A bug in getopts that caused a core dump when standard error
|
|
was redirected has been fixed.
|
|
dd. Testing for file access with null file names now returns false
|
|
now on all systems.
|
|
ee. A bug with [[...]] that caused quoting of patterns following the
|
|
= and != operators to give incorrect results has been fixed.
|
|
ff. A bug with nested $() of builtins, where inner $() was enclosed
|
|
in double quotes has been fixed.
|
|
gg. A bug that caused incorrect results when the -x trace option
|
|
was enabled and command substitution of a builtin command
|
|
produced no output was fixed.
|
|
hh. A bug that prevented set -e from exiting with pipelines has
|
|
been fixed.
|
|
ii. Interactive shells that trap TERM, and then reset the trap,
|
|
no longer exit when they receive a TERM signal.
|
|
jj. When inserting text in vi mode, the kill character deletes
|
|
only the insertion, not the whole line.
|
|
kk. A bug with eval that occurred when a word ended in a \ has
|
|
been fixed.
|
|
ll. typeset -f fname now returns false after function fname
|
|
has been unset.
|
|
mm. A bug in trap that caused a command to be interpreted as a
|
|
trap number if the first character was a digit has been fixed.
|
|
nn. A bug that caused a trap action of return to not work correctly
|
|
when an interrupt occured during read has been fixed.
|
|
oo. A bug that could cause the exported value of an integer variable
|
|
that has been imported and modified to be incorrect has been fixed.
|
|
pp. A bug that caused set -n to incorrectly report subscript errors
|
|
has been fixed.
|
|
qq. The select list variable is now set to null when none of the
|
|
given choices is not selected. Previously it was unset.
|
|
rr. The pattern */foo, now also matches symbolic links to non-existent
|
|
files.
|
|
ss. The whence command no longer terminates when it doesn't find
|
|
one of the names.
|
|
|
|
7. Bug fixes for specific non-default option combinations.
|
|
a. VERSIONS: MULTIBYTE no longer automatically enabled.
|
|
b. ACCT: The accdefs.h include removed.
|
|
c. BRACEPAT: No longer references location 0 and dumps core.
|
|
d. EMACSPLUS: Now enables additional EMACS features.
|
|
e. FLOAT: arith.c now compiles.
|
|
f. VI off: e_runvi is no longer unsatisfied external.
|
|
g. SUID_EXEC: execute only works when file descriptor 10 is open.
|
|
|
|
8. Other changes to 11/16/88[abcde]
|
|
a. sh.1 corrections.
|
|
b. sh.memo corrections.
|
|
c. ksh.mk modified to build in a cross development environment.
|
|
d. jobs.c modified to compile on machines that define the new
|
|
line discipline, NTTYDISC, but not the old, OTTYDISC.
|
|
e. RELEASE file corrections.
|
|
f. Some fixes to the stand-alone edit libraries.
|
|
g. VERSIONS option renamed FS_3D
|
|
h. POSIX option added to try out some IEEE POSIX 1003.2 proposals.
|
|
i. VFORK bugs fixed. I still don't recommend this option.
|
|
j. OLDTERMIO option added to 11/16/88c. This option allows older
|
|
termio ioctls, like TCGETA to be called after newer termios
|
|
ioctls' fail. Only effective for machines that have both termio.h
|
|
and termios.h.
|
|
k. universe builtin added to 11/16/88d for systems with /bin/universe.
|
|
l. code changes to 11/16/88e to remove sbrk() dependence and to
|
|
use the standard library version of malloc().
|
|
m. A tests directory that contains some ksh regression test has
|
|
been added. See the README file for more details.
|
|
n. The way builtin commands are coded has been changed to make
|
|
it easier to add builtins.
|
|
|
|
9. Incompatibilities with 11/16/88 version.
|
|
None intentional.
|
|
|