2021-11-14 11:30:49 +00:00
|
|
|
Announcing: KornShell 93u+m 1.0.0-beta.2
|
2021-05-10 16:40:44 +00:00
|
|
|
https://github.com/ksh93/ksh
|
|
|
|
|
|
|
|
In May 2020, when every KornShell (ksh93) development project was
|
|
|
|
abandoned, development was rebooted in a new fork based on the last
|
2021-11-14 11:30:49 +00:00
|
|
|
stable AT&T version: ksh 93u+. This new fork is called ksh 93u+m as a
|
|
|
|
permanent nod to its origin. We're restarting it at version 1.0. Please test
|
|
|
|
this second beta and report any bugs you find, or help us fix known bugs.
|
2021-05-10 16:40:44 +00:00
|
|
|
|
|
|
|
Main developers: Martijn Dekker, Johnothan King, hyenias
|
|
|
|
|
|
|
|
Contributors: Andy Fiddaman, Anuradha Weeraman, Chase, Gordon Woodhull,
|
|
|
|
Govind Kamat, Harald van Dijk, Lev Kujawski, Marc Wilson, Sterling Jensen
|
|
|
|
|
|
|
|
HOW TO GET IT
|
|
|
|
|
|
|
|
Please download the source code tarball from our GitHub releases page:
|
|
|
|
|
|
|
|
https://github.com/ksh93/ksh/releases
|
|
|
|
|
|
|
|
To build, follow the instructions in README.md or src/cmd/ksh93/README.
|
|
|
|
|
|
|
|
HOW TO GET INVOLVED
|
|
|
|
|
|
|
|
To report a bug, please open an issue at our GitHub page (see above).
|
|
|
|
Alternatively, email me at martijn@inlv.org with your report.
|
|
|
|
To get involved in development, read the brief policy information in
|
|
|
|
README.md and then jump right in with a pull request or email a patch.
|
|
|
|
See the TODO file in the top-level directory for a to-do list.
|
|
|
|
|
2021-11-14 11:30:49 +00:00
|
|
|
MAIN CHANGES SINCE KSH 93U+M 1.0.0-BETA.1
|
|
|
|
|
|
|
|
- Various fixes to the test/[ built-in command. It now supports all the same
|
|
|
|
operators as [[ (including =~, \<, \>) except for the different 'and'/'or'
|
|
|
|
operators. Note: test/[ remains deprecated due to its unfixable pitfalls.
|
|
|
|
|
|
|
|
- Fixed a bug that could corrupt output if standard output is closed upon
|
|
|
|
initializing the shell.
|
|
|
|
|
|
|
|
- Fixed a bug in the [[ compound command: the '!' logical negation operator
|
|
|
|
now correctly negates another '!', e.g., [[ ! ! 1 -eq 1 ]] now returns
|
|
|
|
0/true. Note that this has always been the case for 'test'/'['.
|
|
|
|
|
|
|
|
- Fixed SHLVL so that replacing ksh by itself (exec ksh) will not increase it.
|
|
|
|
|
|
|
|
- Miscellaneous bugfixes.
|
|
|
|
|
2021-05-10 16:40:44 +00:00
|
|
|
MAIN CHANGES SINCE KSH 93U+ 2012-08-01
|
|
|
|
|
|
|
|
Hundreds of bugs have been fixed, including many serious/critical bugs.
|
|
|
|
This includes upstreamed patches from OpenSUSE, Red Hat, and Solaris, fixes
|
|
|
|
backported from the abandoned 93v- beta and ksh2020 fork, as well as many
|
|
|
|
new fixes from the community. See the NEWS file for more information, and
|
|
|
|
the git commit log for complete documentation of every fix. Incompatible
|
|
|
|
changes have been minimised, but not at the expense of fixing bugs. For a
|
|
|
|
list of potentially incompatible changes, see src/cmd/ksh93/COMPATIBILITY.
|
|
|
|
|
|
|
|
Though there was a "no new features, bugfixes only" policy, some new
|
|
|
|
features were found necessary, either to fix serious design flaws or to
|
|
|
|
complete functionality that was evidently intended, but not finished.
|
|
|
|
Below is a summary of these new features.
|
|
|
|
|
|
|
|
New command line editor features:
|
|
|
|
|
|
|
|
- The forward-delete and End keys are now handled as expected in the
|
|
|
|
emacs and vi built-in line editors.
|
|
|
|
|
|
|
|
- In the vi and emacs line editors, repeat count parameters can now also
|
|
|
|
be used for the arrow keys and the forward-delete key. E.g., in emacs
|
|
|
|
mode, <ESC> 7 <left-arrow> will now move the cursor seven positions to
|
|
|
|
the left. In vi control mode, this would be entered as: 7 <left-arrow>.
|
|
|
|
|
|
|
|
New shell language features:
|
|
|
|
|
|
|
|
- The &>file redirection shorthand (for >file 2>&1) is now available for
|
|
|
|
all scripts and interactive sessions and not only for profile/login
|
|
|
|
scripts, bringing ksh 93u+m in line with mksh, bash, and zsh.
|
|
|
|
|
|
|
|
- File name generation (a.k.a. pathname expansion, a.k.a. globbing) now
|
|
|
|
never matches the special navigational names '.' (current directory)
|
|
|
|
and '..' (parent directory). This change makes a pattern like .*
|
|
|
|
useful; it now matches all hidden files (dotfiles) in the current
|
|
|
|
directory, without the harmful inclusion of '.' and '..'.
|
|
|
|
|
2021-12-09 06:31:37 +00:00
|
|
|
- Tilde expansion can now be extended or modified by defining a
|
|
|
|
.sh.tilde.get or .sh.tilde.set discipline function. This replaces a
|
|
|
|
2004 undocumented attempt to add this functionality via a .sh.tilde
|
|
|
|
command, which never worked and crashed the shell. See the manual for
|
|
|
|
details on the new method.
|
|
|
|
|
2021-05-10 16:40:44 +00:00
|
|
|
New features in built-in commands:
|
|
|
|
|
|
|
|
- Usage error messages now show the --help/--man self-documentation options.
|
|
|
|
|
|
|
|
- Path-bound built-ins (such as /opt/ast/bin/cat) can now be executed by
|
|
|
|
invoking the canonical path, so the following will now work as expected:
|
|
|
|
$ /opt/ast/bin/cat --version
|
|
|
|
version cat (AT&T Research) 2012-05-31
|
|
|
|
|
|
|
|
- 'command -x' now looks for external commands only, skipping built-ins.
|
|
|
|
In addition, its xargs-like functionality no longer freezes the shell on
|
|
|
|
Linux and macOS, making it effectively a new feature on these systems.
|
|
|
|
|
|
|
|
- 'redirect' now checks if all arguments are valid redirections before
|
|
|
|
performing them. If an error occurs, it issues an error message instead
|
|
|
|
of terminating the shell.
|
|
|
|
|
|
|
|
- 'suspend' now refuses to suspend a login shell, as there is probably no
|
|
|
|
parent shell to return to and the login session would freeze.
|
|
|
|
|
|
|
|
- 'times' now gives high precision output in a POSIX compliant format.
|
|
|
|
|
|
|
|
- 'typeset' now gives an informative error message if an incompatible
|
|
|
|
combination of options is given.
|
|
|
|
|
|
|
|
- 'whence -v/-a' now reports the location of autoloadable functions.
|
|
|
|
|
|
|
|
New features in shell options:
|
|
|
|
|
|
|
|
- A new --globcasedetect shell option is added on OSs where we can
|
|
|
|
check for a case-insensitive file system (currently Windows/Cygwin,
|
|
|
|
macOS, Linux and QNX 7.0+). When this option is turned on, file name
|
|
|
|
generation (globbing), as well as file name tab completion on
|
|
|
|
interactive shells, automatically become case-insensitive on file
|
|
|
|
systems where the difference between upper and lower case is ignored
|
|
|
|
for file names. This is transparently determined for each directory, so
|
|
|
|
a path pattern that spans multiple file systems can be part
|
|
|
|
case-sensitive and part case-insensitive.
|
|
|
|
|
|
|
|
- A new --nobackslashctrl shell option disables the special escaping
|
|
|
|
behaviour of the backslash character in the emacs and vi built-in
|
|
|
|
editors. Particularly in the emacs editor, this makes it much easier to
|
|
|
|
go backward, insert a forgotten backslash into a command, and then
|
|
|
|
continue editing without having your next cursor key replace your
|
|
|
|
backslash with garbage. Note that Ctrl+V (or whatever other character
|
|
|
|
was set using 'stty lnext') always escapes all control characters in
|
|
|
|
either editing mode.
|
|
|
|
|
|
|
|
- A new --posix shell option has been added to ksh 93u+m that makes the
|
|
|
|
ksh language more compatible with other shells by following the POSIX
|
|
|
|
standard more closely. See the manual page for details. It is enabled by
|
|
|
|
default if ksh is invoked as sh, otherwise it is disabled by default.
|
|
|
|
|
|
|
|
- Enhancement to -G/--globstar: symbolic links to directories are now
|
|
|
|
followed if they match a normal (non-**) glob pattern. For example, if
|
|
|
|
'/lnk' is a symlink to a directory, '/lnk/**' and '/l?k/**' now work as
|
|
|
|
you would expect.
|