R50d is a required bugfix release:
- [Goodbox] Fix NULL pointer dereference on “unset x; nameref x”
- [tg] Fix severe regression in field splitting (LP#1378208)
- [tg] Add a warning about not using tainted user input (including from
the environ(7)ment) in arithmetics, until Stéphane writes it up nicely
R50c is a security fix release:
- [tg] Know more rare signals when generating sys_signame[] replacement
- [tg] OpenBSD sync (mostly RCSID only)
- [tg] Document HISTSIZE limit; found by luigi_345 on IRC
- [zacts] Fix link to Debian .mkshrc
- [tg] Cease exporting $RANDOM (Debian #760857)
- [tg] Fix C99 compatibility
- [tg] Work around klibc bug causing a coredump (Debian #763842)
- [tg] Use issetugid(2) as additional check if we are FPRIVILEGED
- [tg] SECURITY: do not permit += from environment
- [tg] Fix more field splitting bugs reported by Stephane Chazelas and
mikeserv; document current status wrt. ambiguous ones as testcases too
Fixes CVE-2014-6278:
A combination of nested command substitutions and function importing
from the environment can cause bash to execute code appearing in
the environment variable value following the function definition.
Changelog:
R50b is a recommended bugfix release:
* [Ypnose] Fix operator description in the manpage
* [tg] Change all mention of “eglibc” to “glibc”, it is merged back
* [Colona] Fix rare infinite loop with invalid UTF-8 in the edit buffer
* [tg] Make more clear when a shell is interactive in the manpage
* [tg] Document that % is a symmetric remainder operation, and how to
get a mathematical modulus from it, in the manpage
* [tg, Christopher Ferris, Elliott Hughes] Make the cat(1) builtin also
interruptible in the write loop, not just in the read loop, and avoid
it getting SIGPIPE in the smores function in dot.mkshrc by terminating
cat upon user quit
* [tg] Make some comments match the code, after jaredy from obsd changed
IFS split handling
* [tg] Fix some IFS-related mistakes in the manual page
* [tg] Document another issue as known-to-fail test IFS-subst-3
* [tg] Improve check.pl output in some cases
* [tg, Jb_boin] Relax overzealous nameref RHS checks
R50 is a recommended bugfix release:
* [tg] Fix initial IFS whitespace not being ignored when expanding
* [tg] MKSH_BINSHREDUCED no longer mistakenly enables brace expansion
* [tg] Explain more clearly Vi input mode limitations in the manpage
* [tg] Improve error reporting of the check.pl script (which needs a
maintainer since I don’t speak any perl(1), really), for lewellyn
* [tg] Use $TMPDIR in test.sh for scratch space
* [tg, Polynomial-C] Check that the scratch space is not mounted noexec
* [pekster, jilles, tg] Use termcap(5) names, not terminfo(5) names, in
tput(1) examples, for improved portability (e.g. to MidnightBSD)
* [tg] Avoid C99 Undefined Behaviour in mirtoconf LFS test (inspired by
Debian #742780)
* [tg] Fix ${!foo} for when foo is unset
* [tg] Improve nameref error checking (LP#1277691)
* [tg] Fix readonly bypass found by Bert Münnich
* [Ryan Schmidt] Improved system reporting for Mac OS X
* [nDuff] Explain better [[ extglob handling in the manpage
* [tg] Remove arr=([index]=value) syntax due to regressions
* [tg] IFS-split arithmetic expansions as per POSIX 201x
* [OpenBSD] Add more detailed Authors section to manpage
* [tg] Fix set ±p issue for good: drop privs unless requested
* [tg] Improve signal handling and use a more canonical probing order
* [tg] Fix return values $? and ${PIPESTATUS[*]} interaction with set -o
pipefail and COMSUBs
* [enh] Detect ENOEXEC ELF files and use a less confusing error message
* [tg] Update to Unicode 7.0.0
* [tg] Shut up valgrind in the $RANDOM code
* [tg] Use -fstack-protector-strong in favour of -fstack-protector-all
* [tg] Fix access-after-free crash spotted by Enjolras via IRC
Do it for all packages that
* mention perl, or
* have a directory name starting with p5-*, or
* depend on a package starting with p5-
like last time, for 5.18, where this didn't lead to complaints.
Let me know if you have any this time.
This is a terse description of the new features added to bash-4.3 since
the release of bash-4.2. As always, the manual page (doc/bash.1) is
the place to look for complete descriptions.
1. New Features in Bash
a. The `helptopic' completion action now maps to all the help topics, not just
the shell builtins.
b. The `help' builtin no longer does prefix substring matching first, so
`help read' does not match `readonly', but will do it if exact string
matching fails.
c. The shell can be compiled to not display a message about processes that
terminate due to SIGTERM.
d. Non-interactive shells now react to the setting of checkwinsize and set
LINES and COLUMNS after a foreground job exits.
e. There is a new shell option, `globasciiranges', which, when set to on,
forces globbing range comparisons to use character ordering as if they
were run in the C locale.
f. There is a new shell option, `direxpand', which makes filename completion
expand variables in directory names in the way bash-4.1 did.
g. In Posix mode, the `command' builtin does not change whether or not a
builtin it shadows is treated as an assignment builtin.
h. The `return' and `exit' builtins accept negative exit status arguments.
i. The word completion code checks whether or not a filename containing a
shell variable expands to a directory name and appends `/' to the word
as appropriate. The same code expands shell variables in command names
when performing command completion.
j. In Posix mode, it is now an error to attempt to define a shell function
with the same name as a Posix special builtin.
k. When compiled for strict Posix conformance, history expansion is disabled
by default.
l. The history expansion character (!) does not cause history expansion when
followed by the closing quote in a double-quoted string.
m. `complete' and its siblings compgen/compopt now takes a new `-o noquote'
option to inhibit quoting of the completions.
n. Setting HISTSIZE to a value less than zero causes the history list to be
unlimited (setting it 0 zero disables the history list).
o. Setting HISTFILESIZE to a value less than zero causes the history file size
to be unlimited (setting it to 0 causes the history file to be truncated
to zero size).
p. The `read' builtin now skips NUL bytes in the input.
q. There is a new `bind -X' option to print all key sequences bound to Unix
commands.
r. When in Posix mode, `read' is interruptible by a trapped signal. After
running the trap handler, read returns 128+signal and throws away any
partially-read input.
s. The command completion code skips whitespace and assignment statements
before looking for the command name word to be completed.
t. The build process has a new mechanism for constructing separate help files
that better reflects the current set of compilation options.
u. The -nt and -ot options to test now work with files with nanosecond
timestamp resolution.
v. The shell saves the command history in any shell for which history is
enabled and HISTFILE is set, not just interactive shells.
w. The shell has `nameref' variables and new -n(/+n) options to declare and
unset to use them, and a `test -R' option to test for them.
x. The shell now allows assigning, referencing, and unsetting elements of
indexed arrays using negative subscripts (a[-1]=2, echo ${a[-1]}) which
count back from the last element of the array.
y. The {x}<word redirection feature now allows words like {array[ind]} and
can use variables with special meanings to the shell (e.g., BASH_XTRACEFD).
z. There is a new CHILD_MAX special shell variable; its value controls the
number of exited child statues the shell remembers.
aa. There is a new configuration option (--enable-direxpand-default) that
causes the `direxpand' shell option to be enabled by default.
bb. Bash does not do anything special to ensure that the file descriptor
assigned to X in {x}<foo remains open after the block containing it
completes.
cc. The `wait' builtin has a new `-n' option to wait for the next child to
change status.
dd. The `printf' %(...)T format specifier now uses the current time if no
argument is supplied.
ee. There is a new variable, BASH_COMPAT, that controls the current shell
compatibility level.
ff. The `popd' builtin now treats additional arguments as errors.
gg. The brace expansion code now treats a failed sequence expansion as a
simple string and will continue to expand brace terms in the remainder
of the word.
hh. Shells started to run process substitutions now run any trap set on EXIT.
ii. The fc builtin now interprets -0 as the current command line.
jj. Completing directory names containing shell variables now adds a trailing
slash if the expanded result is a directory.
kk. `cd' has a new `-@' option to browse a file's extended attributes on
systems that support O_XATTR.
ll. The test/[/[[ `-v variable' binary operator now understands array
references.
2. New Features in Readline
a. Readline is now more responsive to SIGHUP and other fatal signals when
reading input from the terminal or performing word completion but no
longer attempts to run any not-allowable functions from a signal handler
context.
b. There are new bindable commands to search the history for the string of
characters between the beginning of the line and the point
(history-substring-search-forward, history-substring-search-backward)
c. Readline allows quoted strings as the values of variables when setting
them with `set'. As a side effect, trailing spaces and tabs are ignored
when setting a string variable's value.
d. The history library creates a backup of the history file when writing it
and restores the backup on a write error.
e. New application-settable variable: rl_filename_stat_hook: a function called
with a filename before using it in a call to stat(2). Bash uses it to
expand shell variables so things like $HOME/Downloads have a slash
appended.
f. New bindable function `print-last-kbd-macro', prints the most-recently-
defined keyboard macro in a reusable format.
g. New user-settable variable `colored-stats', enables use of colored text
to denote file types when displaying possible completions (colored analog
of visible-stats).
h. New user-settable variable `keyseq-timout', acts as an inter-character
timeout when reading input or incremental search strings.
i. New application-callable function: rl_clear_history. Clears the history list
and frees all readline-associated private data.
j. New user-settable variable, show-mode-in-prompt, adds a characters to the
beginning of the prompt indicating the current editing mode.
k. New application-settable variable: rl_input_available_hook; function to be
called when readline detects there is data available on its input file
descriptor.
l. Readline calls an application-set event hook (rl_event_hook) after it gets
a signal while reading input (read returns -1/EINTR but readline does not
handle the signal immediately) to allow the application to handle or
otherwise note it.
m. If the user-settable variable `history-size' is set to a value less than
0, the history list size is unlimited.
n. New application-settable variable: rl_signal_event_hook; function that is
called when readline is reading terminal input and read(2) is interrupted
by a signal. Currently not called for SIGHUP or SIGTERM.
o. rl_change_environment: new application-settable variable that controls
whether or not Readline modifies the environment (currently readline
modifies only LINES and COLUMNS).
R49 is a recommended bugfix release:
- [tg] dot.mkshrc: fix two issues with the cd wrapper
- [tg] Unbreak set +p (wider issue still to be addressed)
- [Steffen Daode Nurpmeso] Use WCONTINUED with waitpid(2)
- [millert] Add proper suspend builtin handling tty(4) and setpgrp(2)
- [tg] Sanitise and slightly optimise control character handling
- [tg] Add O_BINARY to all open(2) calls for OS/2 kLIBC support
- [tg] Generate option strings for shell, set, ulimit at compile time
- [Steffen Daode Nurpmeso] Drop ISTRIP termios(4) mode
- [tg] Mention negative history numbers, octals in the manpage
- [tg] Make check.pl work with Perl < 5.6.1 again
- [tg] Detect getsid(2) and skip the oksh suspend builtin otherwise
- [tg] Document that set -o noclobber is unsafe for tempfiles
- [tg] Update to Unicode 6.3.0
- [RT] Restore some portability
- [tg] Fix parsing positional argument variable names
- [tg] Sprinkle a few __attribute__((__pure__)); fix warnings
- [tg] Fix build on OSX: always use our wcwidth code; only use our strlcpy(3)
code if the OE doesn’t provide one (prompted by jonthn on IRC)
- [tg] Optimise sh -c to exec even in MKSH_SMALL
- [tg] Use new BAFH for hashing
* Fix build on Debian GNU/kFreeBSD 7.3
* Update MASTER_SITES
Changelog:
This is version 5.0.5 of the shell. This is a stable release.
There are minor new features as well as bug fixes since 5.0.2.
5.0.3 and 5.0.4 were short-lived releases with most of the features of
5.0.5 that were replaced owing to significant bugs.
Incompatibilities between 5.0.2 and 5.0.5
-----------------------------------------
The "zshaddhistory" hook mechanism documented in the zshmisc manual page
has been upgraded so that a hook returning status 2 causes a history
line to be saved on the internal history list but not written to the
history file. Previously any non-zero status return would cause
the line not to be saved on the history at all. It is recommended
to use status 1 for this (indeed most shell users would naturally do
so).
Upstream changes:
-----------------
=== v0.9.16 14/08/2013 ===
* Added support to login script. Thank you Laurent Debacker for the patch.
* Fixed auto-complete failing with "-"
* Fixed bug where forbidden commands still execute if strict=1
* Fixed auto-completion complete of forbidden paths
* Fixed wrong parsing &, | or ; characters
* Added urandom function definition for python 2.3 compat
* Corrected env variable expansion
* Add support for cd command in aliases
* Split lshellmodule in multiple files under the lshell directory
* Fixed check_secure function to ignore quoted text
* Fixed multiple spaces escaping forbidden filtering
* Fixed log file permissions 644 -> 600
* Added possibility to override config file option via command-line
* Enabled job control when executing command
* Code cleanup
=== v0.9.15.2 08/05/2012 ===
* Corrected mismatch in aliaskey variable.
Changes:
R48b is a minor bugfix update:
[tg] Fix display issue with multi-line prompts and SIGWINCH
R48 is a small but important bugfix update:
[tg] dot.mkshrc: unbreak hd(1) function in UTF-8 mode
[Jens Staal, tg] Improve buildability on Plan 9 and support kencc
[tg] Clean up and improve build process and testsuite
[Michael Langguth] Add multi-layer ICO file from mksh/Win32
[tg, Steffen Daode Nurpmeso] Fix interactive shell exiting on ^C or
syntax error when the EXIT pseudo-signal trap was set (to anything)
[tg, Daode] Display longer command excerpts in job control
[tg] Rewrite Emacs mode display window sliding calculation code
[tg] dot.mkshrc: “doch” now keeps standard input
[tg] Reduce memory usage and improve comments and documentation
R47 is a bugfix everyone must upgrade to:
[tg] Do not accidentally remove lksh.1 for in-srcdir builds
[tg] Fix post-build non-‘-Q’ output for lksh
[tg] Silence some configure-time warnings for clang-3.2 and GCC
[tg] Prevent recursion loops for namerefs; found by ormaaj
[tg] Replace wcwidth code by mine based on Unicode 6.2.0
[tg, Alexander Polakov] Fix quoting in word part of ${var+word} etc.
when the expression is in a quoted brace or a here document
[tg] Fix some compiler warnings; improve sig{,handler}_t detection
[tg] Keep SIGCHLD blocked in some more semi-critical code paths
[tg] Fix uninitialised variable causing random nōn-numerical input to be
accepted and acted upon in the select built-in command
[tg] No longer chown(2)/chmod(2) the -T tty(4) argument
[tg] Don’t fork(2) if the -T tty(4) argument begins with ‘!’; eliminates
the need for things like oneit_line/cttyhack/etc. on Linux
[jca] Fix “for var in; do” to not be interpreted as “for var; do”
[tg] Use %zu for printing size_t (ipv %lu with casting around)
[tg] use ${SIZE-size} for lewellyn’s cross
[fgsch, espie, millert, tg] Write more testcases
[millert] POSIX specifies that for && and || lists, only the exit status
of the last command matters for “set -e”; fix and document
[millert] check.pl: Add -T flag to set the tmpdir; use mkstemp(3) and
mkdtemp(3) instead of $$ in /tmp for tempfiles
[jca] Make $(<nonexistent) behave like $(cat nonexistent)
[tg] Let shf_open return an errno; display why file wasn’t read
[tg] Finally decide on regression-39 desired outcome (sync with AT&T
ksh93 and GNU bash --posix as well as mksh behaviour)
[tg] Fix post{in,de}crement in not evaluated side of e.g. ternary operator (LP#1187729)
[tg] Fix “set -x” problems; add “set +o inherit-xtrace” (LP#1179287)
[tg] Simplify some code
[tg] Fix segfault related to mixing funsub/valsub and comsub
R46 delivers these changes:
[tg] dot.mkshrc: prevent lksh from running it
[tg] Add the lksh manual page to the mksh distribution
[tg] Make both lksh and mksh interpret numbers with a leading digit zero
(‘0’) as octal precisely iff “set -o posix” is active
[tg] Point out the octal digit and the integer arithmetic differences
from POSuX verbosely in the manual pages (point people who need octals
to “set -o posix” and who need longs to lksh) and elaborate on the
horrors of ISO C Undefined Behaviour which is allowed to delete all your
data
[tg] Unbreak “set -o” (list flags) in lksh on LP64 machines
[tg] Implement Emacs mode PgUp as Vi insert mode Cur↑ for Yofuh
[tg] Allow setting both “set -o sh” and “set -o posix”, if done in the
same command; shuffle around compatibility levels (mksh/lksh, with -o
sh, with -o posix) again; permit a /bin/sh to set either or both
[tg] Sync lksh manual page with the exact code ifdefs
[tg] Change more use of signed integer to use unsigned instead
[tg] Implement “set -o pipefail” like AT&T ksh93 and GNU bash do
[tg] dot.mkshrc: provide hd(1) in Pure mksh™ for fallback
[tg] Implement VALSUBs (value substitutions): ${|REPLY=foo;}
are replaced with .include "../../devel/readline/buildlink3.mk", and
USE_GNU_READLINE are removed,
* .include "../../devel/readline/buildlink3.mk" without USE_GNU_READLINE
are replaced with .include "../../mk/readline.buildlink3.mk".
- Bump version 0.3.14 to 0.12.
- Add LICENSE= as gnu-gpl-v2.
patches/patch-a[ab]
- comment added from old cvs log
Following lines are recent changes from ChangeLog. For full
ChangeLog, see:
https://launchpad.net/debian/+source/posh/+changelog
--------
posh (0.12)
* Fix shell flag handling, broken since 0.9.1. closes: #707778.
posh (0.10.2)
* Fix "nostrip" build. closes: #674703.
* Fix Italian Language-Team email address. closes: #660020.
* Don't segfault when bi_errorf(NULL) is called. closes: #674701.
* Bump to Standards-Version 3.9.3.
posh (0.10) unstable; urgency=low
* Do not treat a bad signal passed to the trap builtin as a fatal/syntax error.
posh (0.8.5) unstable; urgency=low
* Apply bugfix from mksh overhauling the code for substitutions
such as ${foo:-bar} and "${foo+bar}" for standards compliance
and pull the test cases that go with it.
* Bump to Standards-Version 3.8.4.
* Switch to 3.0 (native) source format.
---------
to fix segmentation fault just after invocation, at least on
NetBSD/amd64 6.1, which is reported as PR pkg/47917.
The problem was also reported by gcc (4.5.3) as:
main.c: In function 'main':
main.c:206:15: warning: assignment makes pointer from integer without a cast
At following location:
203 char *simplified;
....
206 simplified = canonicalize_file_name(current_wd);
to address issues with NetBSD-6(and earlier)'s fontconfig not being
new enough for pango.
While doing that, also bump freetype2 dependency to current pkgsrc
version.
Suggested by tron in PR 47882
a) refer 'perl' in their Makefile, or
b) have a directory name of p5-*, or
c) have any dependency on any p5-* package
Like last time, where this caused no complaints.
Should patch the configure script to respect the environment setting
of CC_FOR_GETHOST (or CC_FOR_BUILD or something), but this is less
work and will do for now.
Patch it up to use compile-tests rather than run-tests in autoconf
for many of its tests (OS-independently). Teach it about the few
remaining properties for NetBSD in particular.
ok agc
* [tg] Make “set -x” print the commands run in escaped form
* [tg] PS4 in dot.mkshrc is now timestamped
* [tg] The &> GNU bash I/O redir is no longer parsed in -o posix, -o sh modes,
lksh (breaks valid scripts)
* [tg] Implement ${ …;} more efficiently (deleted-open files)
* [tg] For shf, %#s (if you can get it past GCC’s printf format attribute)
calls print_value_quoted, ignoring field width and precision
* [tg] Catch “typeset =” (regression) with better error message
* [tg, Tonnerre Lombard] add “doch” alias to dot.mkshrc which just repeats the
last input line with sudo(8)
* [tg] Use unsigned integers for all calculations, to avoid ISO C “Undefined
Behaviour” (and implementation-defined behaviour) throughout (most of) the
code; emulate signed integer arithmetics using unsigned; not-lksh only
* [tg] Emulate signed modulo naïvely, for correct sign of the result
* [tg] Add <<< and >>> for ROL and ROR (rotate left and right, respectively)
operations, <<<= and >>> assignments; bitwise AND the RHS of a shift/rotate
op with 31 (not for lksh)
* [tg] Remove a warning by working around a workaround found in dietlibc which
works around a bug in broken software such as GNU tar (really!)
* [tg] Correct and simplify list and categorisation of built-in commands as
POSIX special and “everything else” plus a flag to keep assignments
* [tg] Handle ((foo)) as “let]” internally to avoid a conflict with
user-defined functions called let (LP#1156707)
* [tg] Clean up the code
separately distributed catman page.
R44 contains these bugfixes:
* [tg] "$@" always generates words; bug spotted by engla in IRC
* [tg] Optimise print_columns display to use the screen space better
Please upgrade to mksh R43 (or stick on R41c) because of#
* [tg] Do not permit $'#' and $"#" in anything that looks like a
string, as old scripts, like ncurses', depend on behaviour not
guaranteed by POSIX regarding unescaped dollar signs there
* [dalias] Make detection of function prototypes more reliable
* [tg] Quote setenv arguments for eval properly in dot.mkshrc
* [tg] Validate parameter names for typeset, export, etc.
* [tg] Provide a classic BSD echo builtin for /bin/sh on MidnightBSD
* [tg] When generating Makefrag.inc put list of check_categories
inside
* [tg] Actually test all [197]echo(1) flavours and MidnightBSD
/bin/sh hacks
mksh R42b and R41c fix regressions:
* [tg] Correctly initialise memory (Debian #700604)
* [tg] LP#1104543 fix was too strict (Debian #700526)
mksh R42 brings back the release\ {early,often} scheme:
* [tg] Make -DMKSH_DISABLE_EXPERIMENTAL a nop again
* [tg] Quell some LLVM+Clang warnings; overhaul scan-build
[198]assert(3)s
* [tg, RT] Bunch of portability and build system fixes
* [tg] Re-enable ${ precmd;} in dot.mkshrc and fix it to retain the
errorlevel
* [RT] Port to Minix-vmd, QNX 4, Watcom C; begin porting to SunOS
4.1.1, Xenix, ISC (Interactive) Unix
* [tg] Prefer const-clean sys_errlist[] to [199]strerror(3)
* [tg] Permit $"#" and $'#' everywhere except in the body of here
documents that are not here strings
* [tg] Use full recursive parser for double-quoted here strings, and
reuse code between here strings and here documents
* [tg] #ifdef DEBUG_LEAKS free all fds and memory on exit
(LP#1106116)
* [tg] Don't close stdout/stderr with redirections, dup /dev/null
instead, always, both in dot.mkshrc and the testsuite, it does
break!
* [tg] Handle ${ #;} like functions in that local and return DWIW;
use it for the big chunk in $PS1 to avoid [200]fork(2)ing (at cost
of tempfiles; dot.mkshrc is a sample, adjust to your needs)
* [tg] Document invalid ${a/b/c} patterns in manpage (Debian #698678)
mksh R41b is a bugfix-only release off a stable branch:
* [tg] Fix [201]gettimeofday(2) detection at build time (warning)
* [RT, tg] Build.sh: catch non-working dash printf builtin
* [chris2, dalias, tg] Remove musl libc workaround and use
_GNU_SOURCE which they kindly aliased to _ALL_SOURCE, which is
implemented now
* [tg] Fix getn and some cases of possible array bounds trespasses
* [chris2, dalias, tg] Use -fno-asynchronous-unwind-tables with GCC
* [tg] Fix a few warnings from libFirm/cparser (mostly
-Wsign-compare)
* [tg] Correct mistake when doing hashtable lookup collision
resolution
* [tg] Fix running the ERR and EXIT traps in situations with set -e
and/or eval (also closes Debian #696823)
* [tg] Fix "command shift", reported by «ormaaj:#!/bin/mksh»
* [Torsten Sillke] Unbreak linking on AIX (remove -qextchk)
* [tg] Fix regression wrt lists in functions and "set -e"
(LP#1104543)
mksh R41 brings a number of bugfixes and new features:
* [tg] Drop "set ±o arc4random" (deprecated in R40)
* [tg] Drop old Build.sh -long-options (deprecated in R40)
* [tg] Change the internal hash algorithm from Bob Jenkins'
one-at-a-time to its NUL-counting, always-changing,
better-avalanching MirOS variant [202]NZAAT (with feedback from
ciruZ; 75% fill level is reasonable; names tbd in Mirkev/MirJSON)
* [tg] Use $'#' for non-ASCII parameters for re-entry printing
* [tg] Use sane spelling of "read-only" consistently
* [tg] Improve tree -DDEBUG functions (internal/developer use)
* [tg] Reduce stack usage a bit; speed up hash tables at size cost
* [tg] MKSH_SMALL no longer implies -fno-inline
* [tg] Support optional seed in ${parameter@#seed} for security
* [tg] New Build.sh environment configurable: LDSTATIC (empty)
* [tg] Improve LTO effect by always adding our copies of distributed
utility function sources when linking statically (i.e. LDSTATIC is
not empty)
* [tg] Drop deprecated hack for lines beginning with an exclamation
mark
* [tg] No longer interpret numbers beginning with a 0 digit as octal
* [tg] Attempt to use -fwrapv on more compilers
* [tg, RT] Better portability to 386BSD, Debian 0.91, ancient Unic#s
* [tg] No longer use [203]mkstemp(3) or [204]tempnam(3) functions, do
our own
* [tg] Fix some bugs in the manual page and Build.sh
* [tg] Add MKSH_NO_CMDLINE_EDITING, MKSH_DISABLE_TTY_WARNING
* [RT] Port to Coherent UNIX
* [tg] Enable some options by default for some ports, for instance,
since BeOS can never have a controlling tty, the option disabling
that warning
* [tg] Some bugfixes, prompted by RT and Valgrind
* [RT] Disable [205]sigsuspend(2) on Syllable Desktop
* [tg] Fix several issues with typeset -p (LP: #993847)
* [RT] Detect lcc and apply inline fix, e.g. for use with libc5
* [tg] If klibc, set -DMKSH_NO_LIMITS and check for sigsuspend fix
* [tg] Fix some issues found by Coverity and some found while fixing
* [tg] Build.sh options: -t target-filename (instead of mksh); -L to
build a legacy mksh, current changes:
+ different $KSH_VERSION "LEGACY KSH" instead of "MIRBSD KSH"
+ purely for running ksh88 and pdksh scripts; no command line
editing
+ use traditional "set -- $(getopt #); echo $?" mode always
+ do not keep file descriptors private
+ parse leading-zero-digit numbers as octal
+ no mksh extension -T
+ use "long", not "int32_t", for arithmetics
* [tg] fix trimming with positional parameters (Debian #48453)
* [tg] ensure that case end tokens are not mixed up (Debian #220272)
* [tg] make alias definitions in mksh -c work (Debian #517009), hack
* [tg] Apply speed improvements and add MKSH_SMALL_BUT_FAST
* [tg] Fix CONSERVATIVE_FDS use-before-definition bug
* [tg] Correct two regressions when tab-completing (LP: #1025843) and
fix bugs in the same code wrt. completion display and other
expansions
* [tg] Make quoted output of "typeset -p" AT&T ksh93 compatible
* [tg] Implement ${foo@Q} like ${foo:Q} in [206]make(1)
* [tg] Remove some unused code; more int # bool conversion
* [tg] Fix using here documents in COMSUB etc. (LP: #1030581)
* [tg] Fix ulimit builtin usage to match what limits we actually know
* [tg] Allow overriding /etc location, experts only (LP: #1039713)
* [tg] Update to Unicode 6.1.0
* [tg, Todd Miller] Avoid changing [207]ps(1) output by accident
* [tg, ft, Christian Neukirchen] Detect zsh 2.5.02/NeXTstep for
Build.sh
* [tg] Detect musl-gcc wrapper, define _BSD_SOURCE there, which is
totally bogus, but musl, just like dietlibc, gets it wrong
* [tg] Improve compile-time assertions
* [tg] Repair select builtin without any choices given
* [tg] Add -DMKSH_GCC55009 hack to avoid some compile-time assertions
and introduce arith-mandatory in check.t to substitute for missing
that compile-time check; will change
* [tg] Rewrite lots of code to not rely on -fwrapv so much
* [tg] Build.sh: Fix [208]flock(2) detection on GNU/Linux
* [Andrew Kudryashov] Manpage: fix default for HISTSIZE
* [tg] Add debugging aid (split-screen mechanism using GNU screen)
* [Andrew Kudryashov] Manpage, Website: point out correct mailing
list
* [tg, Andrew Kudryashov] Fix ~/nonexistant tab completion
* [tg] Optimise sh -c "[^]\t\n"-$&-*;-?[\\`|]*" to exec, inspired by
Jilles Tjoelker (-DMKSH_DISABLE_EXPERIMENTAL to ostracise)
* [tg] Fix $? inside eval (RedHat BZ#865121)
* [tg] Implement ksh93 feature ${ foo;} (using tempfiles this time;
exclude with -DMKSH_DISABLE_EXPERIMENTAL in R41)
* [tg] Run SIGINT check more reliably in the cat builtin (LP#1058815)
* [tg] Handle ^C in here documents, COMSUB, arithmetics (LP#1069428)
* [tg] Make dot.mkshrc usable with "set -o nounset" / "set -u"
* [tg, Clint Adams] Clean up and optimise the error handling code
* [tg] Fix and add some checks in the testsuite
* [tg] Sort list of variables in the source code when possible
* [tg] Add $BASHPID (for ormaaj) and $EPOCHREALTIME
* [tg] Improve documentation, #ksh IRC channel homepage
* [tg, RT] Minix 2 also doesn't have [209]gettimeofday(2) # check for
it
* [tg] Fix an input command line editing display redrawing issue
* [tg] Track the tty to keep $COLUMNS and $LINES up-to-date after a
SIGWINCH even in scripts
Changelog:
Changes since 5.0.0
-------------------
Numeric constants encountered in mathematical expressions (but not other
contexts) can contain underscores as separators that will be ignored on
evaluation, as allowed in other scripting languages. For example,
0xFFFF_FFFF, or 3.141_592_654.
"functions -T" turns on tracing for the specified function(s) only,
similar to "functions -t" except that tracing is turned off for any
functions called from the specified one(s) that don't also have the -t
or -T flag.
In file completion, the recursive-files style can be set to an array of
patterns to match against "$PWD/". In any matched location, it is
possibly to complete files in arbitrarily deep subdirectories without
needing to type the directory prefix. See example in the zshcompsys
manual.
The _user_expand completer now allows expansion functions in the
user-expand files to return a string in REPLY that will be used to name
the set of expansions returned.
Adam Hoka and hugor.
fish is a user friendly command line shell for UNIX-like operating
systems, written mainly with interactive use in mind. It differs
from other shells in that it only provides as few commands as
built-ins as possible and has a daemon which allows it to have
shared variables and command-line history between shell instances.
It also features feature-rich tab-completion and has command-line
syntax highlighting.
Changelog:
# ksh93
12-08-01 A bug that ignored interrupts for some builtins (e.g. cmdtst::grep)
that read from stdin has been fixed.
12-08-01 A bug that interpreted "cd .foo" as "cd foo" has been fixed.
12-07-30 Added automatic restart for EINTR for ioctl, tcgetattr, and tcsetattr.
12-07-23 A scoping error with namrefs to compound associative arrays has
been fixed.
12-07-20 A bug where builtin -d /path/foo deleted foo has been fixed.
12-07-18 A bug in which /dev/stdout did not work in command substitution on
some systems has been fixed.
12-07-17 A bug in which the restricted option set in a subshell prevented
some variables from getting restored when the subshell completed
has been fixed.
12-07-09 A bug in which the directory is not restored after a subshell changes
the name of the directory for subshells executed in the same process
has been fixed.
12-07-09 A bug in which file descriptors created with {n}< file were not being
closed has been fixed.
12-07-09 The 12-04-04 fix for cd .. was not correct causing cd /etc;cd .. to
remain in /etc. This has been fixed.
12-07-02 A bug in which builtin name did now work for builtins found in a
library added by builtin -f lib has been fixed.
12-07-02 A bug in the edit modes which <tab> after a directory did not refresh
the input line has been fixed.
12-07-02 A bug in which an exit status > 256 corresponding to a signal was
not returned by a function to indicate a signal exit has been fixed.
12-06-28 Fix ulimit -a to list (Kibytes) instead of (kbytes).
12-06-27 Fix unitialized data reference for <CR> as first char in --vi mode.
12-06-26 The formatting of printf "%q" for multibyte locales has changed to
output using \u[xxx] format for valid wide characters.
12-06-25 The size limit for read -N and read -n has been raised to INT_MAX.
12-06-22 A bug in which an exit trap set in a subshell might not be triggered
when the last command was a simple executable has been fixed.
12-06-22 A bug which could cause the shell to hang when a coprocess exits
while a command inside a command substitution is reading from it has
been fixed.
12-06-21 +ksh new accepts for commands of the form for i; <nl> do;...;done
12-06-19 Tab completion after a / when there is only one match not completes
with that match rather than generating a menu of matches.
12-06-19 A bug in which patterns containing {...} where not processed
correctly inside ${var/pattern/string} has been fixed.
12-06-15 Change the .paths plugin/builtin library variable name from
BUILTIN_LIB to PLUGIN_LIB to prevent new plugin_version() aware
-lcmd from causing older non-plugin_version() aware ksh to dump core.
12-06-14 builtin without argument no longer lists .sh.tilde as a built-in.
12-06-12 For assignments if the form x=(foo bar), foo is only check for an
alias if it is float, integer, compound, or nameref.
12-06-12 +The shell supports 64 bit i-nodes even for 32 bit binaries.
12-06-11 A bug wth >; redirection systems for which vfork() was the same a
fork() has been fixed.
12-06-11 A bug in path lookup that ignored buffer boundaries has been fixed.
12-06-08 typeset -a var and typeset -A var, first unset var when var is
a compound variable.
12-06-08 A bug in which running shcomp on a program containg namespace
could core dump has been fixed.
12-06-06 A bug in which unset of an associative array of compound variables
did not completely unset the variable has been fixed.
12-06-06 A bug in which exporting left or right justfied fields could loose
the field width has been fixed.
12-06-06 A bug on Solaris11 in which >; did not work for /dev/null was fixed.
12-06-05 A race condition which occured when stopping a builtin command
invoked from a subshell has been fixed.
12-06-05 A bug with appending elements to an empty indexed array has been
fixed.
12-06-04 A bug in which continuing a stopped builtin could cause it to
terminate has been fixed.
12-06-04 By default, builtins added at runtime will restore the current
directory if they are killed or stopped.
12-06-04 A bug in handling \ in read has been fixed.
12-05-31 Use getrlimit64/setrlimit64 on systems that support it.
12-05-31 Fix 64 bit big-endian arithmentic bug that mishandled nan and inf.
12-05-31 Handle ECONNRESET like EPIPE.
12-05-31 Change .paths parse to use only the last BUILTIN_LIB from the top
and treat BUILTIN_LIB value as a ':' separated list of lib names.
12-05-29 Fix BUILTIN_LIB binding bug that ignored subsequent lookups.
12-05-29 shtests: --nocompile omits the compile test and --compile does only
the compile test.
12-05-25 A command subsitution containing a here-document that itself contains
a here-document no longer hangs.
12-05-24 When the redirection operatory >; is directed to a symlink, it now
overwrites the file named by the link rather than the link.
12-05-21 +Added printf formats %(type)q where type can be html, url, pattern,
ere, or csv.
12-05-18 A bug with appending elements to an indexed array has been fixed.
12-05-18 The exit status from getopts --man interactively was 0 instead of 2
and has been fixed.
12-05-18 Another bug with SHOPT_EDPREDICT which could cause a core dump has
been fixed.
12-05-17 A bug with fixed size arrays which could cause a core dump has been
fixed.
12-05-17 A bug in which the here-document <<< $(<file) was not processed
correctly has been fixed.
12-05-15 The default value for -L, -R, and -Z when the size was not set was
incorrectly defaulting to 1 and has been fixed.
12-05-15 A bug in which a subshell of the form (name=value exec ...) could
coredump when name is an environment variable and xtrace is on has
been fixed.
12-05-15 Fixed a .paths bug in which only the first BUILTIN_LIB assignment worked.
12-05-14 Arithmetic expressions and subexpressions that are not floating point
now treat -0 as 0, so that $((-0)) is 0 and $((-0.0)) is -0.
12-05-11 'unset .sh' now fails with readonly message instead of coredump.
12-05-11 A bug which left an associative array arr containing one element in
the wrong state after expanding with ${arr[@]} has been fixed.
12-05-10 A bug in which typeset -f did not display options that called getopts
has been fixed.
12-05-08 Fixed a number of potential bugs uncovered by valgrind.
12-05-08 A bug in which typeset -b -Z10 var did not initialize var to the
empty string has been fixed.
12-05-07 A bug in which the exit value of an interactive shell could be
affected by the evaluation of the PS1 prompt has been fixed.
12-05-04 A bug in which x=() was not unsetting the old value of x before
creating an empty compound variable has been fixed.
12-05-01 A bug in vi edit mode in which after <ESC>^V, the terminal was not
restored to insert mode after a character is entered has been fixed.
12-04-27 A bug in which old attributes were not cleared when assigning a
value using typeset has been fixed.
12-04-26 +Enabled multiline editing by default. set +o multiline can disable.
12-04-25 The 12-04-17 PATH fix created a new bug which was fixed.
12-04-25 Fixed a big memory leak problem in which unsetting compound variables
did not free all the space.
12-04-25 A bug in which test ! ! ! was treated as an error has been fixed.
12-04-24 A bug with print -v for a compound variable that contained fixed
arrays which prevented the output from being used again as input
has been fixed.
12-04-23 +kill provides the STKFLT signal on systems that support it.
12-04-23 +The -L option was added to kill. The -L option is the same as -l
except that without arguments the output format is in the form of
a select menu.
12-04-23 A bug in which the exit status for an interactive shell was always
0 has been fixed.
12-04-20 Entering blank lines interactively no longer resets the exit status.
12-04-18 A bug in file completion in which the second tab completion on a file
would list the completion rather than inserting the completion has
been fixed.
12-04-18 A bug in which "${arr[@]:i:j}" and "${@:i:j}" generated the empty
string when i was a valid subscript and j was <=0 rather than
generating nothing has been fixed.
12-04-17 A bug in which read -d delim from a terminal did not respond to
interrupt and did not termrinate when the delimiter was entered
has been fixed.
12-04-17 A bug in which a directory in PATH containing a .paths file that
contains a line with FPATH=dir, where dir does not exist could
cause the path search to fail has been fixed.
12-04-16 A bug in which $(trap -p) did not display traps such as ERR and
DEBUG that are not associated with signals has been fixed.
12-04-11 A bug in which unsetting a variable did not unset attributes when
the variable did not have a value has been fixed.
12-04-11 A bug in which read -A for an array whose index is an enumeration
type, lost the enumeration type has been fixed.
12-04-10 Shared libraries loaded from a library named by a BUILTIN_LIB= found
in a .paths file found in a directory on PATH now add builtins that
are associated with the directory in PATH containing the .paths file.
12-04-09 Increased I/O buffer sizes for better performance.
12-04-09 A bug in which the leading 0 was stripped from $x, when $x contained
a heximadecimal constant inside an arithmetic expression inside
a for or while loop.
12-04-06 Modified namespaces to hand variabes FPATH, PATH, and OPTIND that
are defined in name spaces appropriately. This also fixed OPTIND
and OPTARG processing for functions.
12-04-04 A bug in which cd .. fails when the current directory has been
renamed has been fixed.
12-04-02 Made some namespace changes and added a regression test.
12-03-30 A bug with namespaces in which PATH and FPATH set in a namespace was
not restored when leaving the namespace has been fixed.
12-03-29 --- Release ksh93u++ ---
12-03-29 A bug in which appending an index array onto an array without elements
caused the first element to be 1 rather than 0 has been fixed.
12-03-29 A bug which could cause a core dump when copying a large index array
has been fixed.
12-03-28 The shell now generates an error message when the sizes with L, Z, and
R are > 32767 on 32 bit binaries instead of generating a core dump.
12-03-28 A bug in left and right justification in which the width of invalid
characters was not taken as zero has been fixed.
12-03-26 A bug in which typeset -p ref, when ref is a reference to an index
array element did not display the subscript has been fixed.
12-03-23 A bug in lowercase and uppercase fields when expanding ${name:=val}
when name is the empty string has been fixed.
12-03-22 A namespace bug in which a type t defined in namespace foo could not
be referenced outside the namespace as .foo.t has been fixed.
12-03-22 A bug in name reference scoping in which a name function called from
another function is pass a name reference to a compound variable
instance to be created and the compound variable is in the global
scope.
12-03-22 A bug in which ${ref[@}} did not behave like ${arr[i][@]} when
ref is a name reference to arr[i] has been fixed.
12-03-21 A bug in which assigning a compound variable into arr[i], where
arr[i] is an array variable did not work correctly has been fixed.
12-03-21 A bug with multi-dimenstional index arrays in which ${arr[i][j]}
could generate a bogus error message when i was > 9 has been fixed.
12-03-21 A bug in which typeset v=foo, typeset -p v[0] generated a core dump
has been fixed.
12-03-20 A bug in vi edit mode in which the sequence bar<ESC>0i<ESC>l left the
cursor on the b rather than the a has been fixed.
12-03-20 A bug which caused a core dump when defining a type with a field
as ' integer -a data=([0]=0)' has been fixed.
12-03-19 Using typeset -a array when array is an associative arry not
generated an error message.
12-03-19 typeset +a, typeset +A, and typeset +C not displays the variables
with the attributes a, A, and C respectively instead of an error.
12-03-19 A bug in which typeset -pC, typeset -pa, and typeset -pA output all
variables rather than those of type C, a, or A only has been fixed.
12-03-18 A bug in which unset foo where foo is a name reference to a compound
variable defined inside a function is not unset has been fixed.
12-03-18 A bug with SHOPT_EDPREDICT which could cause a core dump when the
list of matches became empty has been fixed.
12-03-15 The assignment, typeset -C foo=(a b c) now generates a syntax
error since a is not an assignment command.
12-03-16 A bug in which an unset discipline from a variable defined in a
subshell is not invoked in the subshell has been fixed.
12-03-08 The assignment typeset -a (x=1 y=2) now creates an index array
of two elements rathern than an array of one element which is
a compound variable.
12-03-02 +The vi and emacs edit modes now list all the entries in a directory
when entering a <tab> for completion after a /.
12-03-02 A bug in which a program that exits with value 12 when called
from a command substitution in which standard output has been
redirected caused the shell to hang has been fixed.
12-03-01 A bug in which the shell could not parse [[ ']' == ~(E)[]] ]]
has been fixed.
# INIT
12-07-17 iffe.sh: add C code NOTE("...") to ammend --verbose output
12-06-26 iffe.sh: fix "npt foo" to handle function-like macro foo()
12-06-20 package.sh: use $KSH for rt in "results test"
12-06-15 Makefile: add PLUGIN_LIB to $INSTALLROOT/bin/.paths and BUILTIN_LIB => PLUGIN_LIB
12-06-15 package.sh: add PLUGIN_LIB to $INSTALLROOT/bin/.paths and BUILTIN_LIB => PLUGIN_LIB
12-06-13 package.sh: handle admin.db column output
12-06-08 iffe.sh: fix 12-06-06 typo
12-06-06 iffe.sh: check for -l* in reverse and accumulative order (e.g., for -last & -lm)
12-06-04 package.sh: always check $INSTALLROOT/lib/package/profile
12-05-31 Makefile: ID=ast; $(INSTALLROOT)/prototyped.h => $(INSTALLROOT)/$(ID)/prototyped.h
12-05-28 iffe.sh: api foo YYYYMMDD => FOOAPI(rel) test macro
12-05-24 package.sh: change admin.db comment => owner attributes
12-04-25 ratz.c: add sear -k option to keep installation tmp dir on exit
12-04-17 package.sh: skip sh version logic for ``use''
12-04-17 cc.ibm.risc*: _LARGEFILE64_SOURCE => _LARGE_FILE_API moved to libast/features
12-04-09 cc.ibm.risc*: speak aixese for _LARGEFILE64_SOURCE
12-02-29 cc.darwin.i386*: handle default cc vs kernel bittedness
12-02-29 C+probe: add __TIMESTAMP__ to the nopredefined list
12-02-29 package.sh: don't assume grep -q or /usr/local/lib in LD_LIBRARY_PATH
12-02-29 package.sh: fix ksh vs -lcmd compatibility checks
* PLIST.xattr is moved to Makefile.common
* Patches are introduced from zsh-current
Tested on NetBSD 6.99.8 and 5.1.
Changelog:
* Many improvements.
In detail, see NEWS
* Optimize dash -c "command" to avoid a fork.
* Eliminate unnecessary promotion in echocmd.
* Avoid using undefined handler.
* Avoid gcc warning: variable 'oldstackp' set but not used.
* Avoid clang warning about dead store to "size".
* Make outc an inline function.
* Remove spurious space in descriptions of PS1, PS2, PS4.
* Remove unused EV_BACKCMD flag.
* Fix clobbering of checkkwd.
* Free IFS state after here document expansion.
* Use va_copy when reusing a va_list.
* Let funcnode refer to a function definition, not its first
* command.
* Improve LINENO support.
* Port to Solaris.
* Fix backslash handling in read(1).
* Dotcmd should exit with zero when doing nothing.
* Fix CTLESC clobbering by read(1).
* Port to AIX.
* Replace GPL noclobberopen code with the FreeBSD version.
* Do not split the result of tilde expansion.
* Mark status as volatile in exitshell.
* Use EXEXIT in place of EXEXEC.
* Stop documenting EXSHELLPROC.
* Use exit status 127 when the script to run does not exist.
* Document optional open parenthesis for case patterns.
* Fixed trap/return regression due to SKIPEVAL removal.
* Allow the originator of EXERROR to set the exit status.
* Free IFS state in evalbackcmd.
* Fix ifsfirst/ifslastp leak in casematch.
* Fix EXEXEC status clobbering.
* Fix ifsfirst/ifslastp leak.
* Fix trailing field bug in read(1).
* Debug compile fix.
* Fix varinit ordering that broke fc.
* Check exit for eval NSUBSHELL.
* Fix loss of variables when hash collides.
* Removed dead code for eval NPIPE.
* Don't clear eflag in evalbackcmd.
* Continue after EINTR in read(1) with no pending signals.
* Force fork if any trap is set, not just on EXIT.
* Fix corruption of redirections with byte 0x81.
* Fix poplocalvar on abnormal exit from function.
* Do not poplocalvars prematurely on regular utilities.
* Move null redirect checks into caller.
* Fix popredir on abnormal exit from built-in.
* Fix wait regression where it does not wait for all jobs.
* Replace cmdenviron with localvars.
* Fix poplocalvar leak.
* Move unsetvar functionality into setvareq.
* Add localvars nesting, local now fails outside functions.
* Fix command -- crash.
* Fix for job control off warning.
* Use faccessat if available.
* Make trap signal name/number errors non-fatal.
* Release 0.5.6.
* Use TMPDIR in mkbuiltins.
* Fix logical or result value.
* Fix binary operator parsing.
* Fix off-by-one recordregion in readcmd.
don't read-uninitialized for \177 in a here-doc
A DEL (0177, dec 127) byte in a here-document would cause dash to
access uninitialized memory at the end of one of the syntax.c
tables,
since those tables are sized to accommodate a maximum index of
BASESYNTAX + 126. Make the generated tables one byte larger.
printf ':<<\\E\n\200y\nE'|./dash
* src/mksyntax.c (filltable): Use 258, not 257 as the size,
so that BASESYNTAX(=130) + 127 is a valid index.
(print): Likewise.
Don't emit explicit array dimension in declaration.
* Avoid compiler warnings on isdigit.
* Add another missing LC_COLLATE to mkbuiltins.
* Fix NUL termination in readcmd.
* Lookup PWD after going through CDPATH.
* Pass EV_TESTED into evalcmd.
* Revert SKIPEVAL into EXEXIT.
* Add preliminary LINENO support.
* Honor tab as IFS whitespace when splitting fields in readcmd.
* Do not truncate file for FROMTO redirection.
* Fix quoted pattern patch breakage.
* Fix incorrect savefd conversions.
* Fix dowait signal race.
* Remove EXSIG.
* Do not close stderr when /dev/tty fails to open.
* Allow newlines after var name in for statements.
* Use CHKNL to parse case statements.
* Update manual page to differentiate dash from ash.
a window when the new patch file wasn't committed, and there's no check
for "extra" lines in distinfo, so this clearly identifies the version
with the new patch file included.
This unbreaks at least one of AST/ksh packages.
Changes since 2006-02-14:
2012-02-29
See the release change log for details:
http://www2.research.att.com/~gsf/download/release.2012-02-29.2011-02-08.html
2011-02-08
This source release contains the first official ksh93u.
See the release change log for details:
http://www2.research.att.com/~gsf/download/release.2011-02-08.2010-08-26.html
2010-08-26
See the release change log for details:
http://www2.research.att.com/~gsf/download/release.2010-08-26.2010-06-21.html
2010-06-21
This source release contains the last official ksh93t+.
The only updates for ksh93t+ will be hotfixes for serious bugs.
See the release change log for details:
http://www2.research.att.com/~gsf/download/release.2010-06-21.2010-06-18.html
2010-03-09
This source and binary release contains a fix for the
2010-03-01 ksh memory leak plus a few minor fixes to clean
up the bit rot that accumulated since 2009-07-04.
See the release change log for details:
http://www2.research.att.com/~gsf/download/release.2010-03-09.2010-03-01.html
2010-03-01
This source and binary release contains minor fixes to the
unannounced 2010-02-02 release. It is the first official
non-beta release in almost 8 months (we really do try to
decrease the time between official releases, but the
abundance of moving targets sometimes makes that
interesting). See the release change log for details:
http://www2.research.att.com/~gsf/download/release.2010-03-01.2010-02-02.html
2010-02-02
This source and binary release includes:
# fixes for problems reported by the OpenSolaris community
as part of the ksh93 integration project
# a UWIN update with initial support for Windows 7,
improved handle and process resource management, and
improved /var/log/uwin logging
# an expanded man page index that includes the UWIN man
pages in the U subsections and nmake(1) rule and operator
man pages in the 1M subsection
See the release change log for details:
http://www2.research.att.com/~gsf/download/release.2010-02-02.2009-07-04.html
2009-07-04
See the release change log for details:
http://www2.research.att.com/~gsf/download/release.2009-07-04.2009-05-05.html
2009-05-05
This source and binary release cleans up a few reported
build problems in the 2009-05-01 release (which has been
removed). The release procedures have been adjusted to avoid
similar problems in the future. (The main problem is
synthesizing external non-ast environments to fully exercise
portions of the build system seen by outside users -- since
we use our stuff for everything, including packaging and
building, setting up an environment that has no ast
components leaking in can be non-trivial).
See the release change log for details:
http://www2.research.att.com/~gsf/download/release.2009-05-05.2009-05-01.html
2009-05-01
This source release contains the official (and hopefully
final) ksh93t+ 2009-05-01, along with updates for the ast
commands and libraries. A lot of work went into cleaning up
the regression tests -- most regressions directly correspond
to unsupported native system features or buggy native system
interfaces that we felt should be fixed rather than worked around.
Of course we could be persuaded otherwise.
See the release change log for details:
http://www2.research.att.com/~gsf/download/release.2009-05-01.2008-11-04.html
2008-11-04
This source release contains the official ksh93t 2008-11-04,
along with updates for a few ast-open commands, libraries and plugins.
See the release change log for details:
http://www2.research.att.com/~gsf/download/release.2008-11-04.2008-07-25.html
2008-07-25
This source release corrects the build problems in the 2008-06-24 source release.
See the release change log for details:
http://www2.research.att.com/~gsf/download/release.2008-07-25.2008-06-24.html
2008-06-24
This source release contains first release of ksh93t and support libraries.
See the release change log for details:
http://www2.research.att.com/~gsf/download/release.2008-06-24.2008-02-02.html
2008-02-02
This release addresses standalone build problems and issues
raised on the lists. It also contains the final ksh93s+ release.
See the release change log for details:
http://www2.research.att.com/~gsf/download/release.2008-02-02.2007-11-05.html
2007-11-05
This release adresses issues raised on the lists.
See the release change log for details:
http://www2.research.att.com/~gsf/download/release.2007-11-05.2007-03-28.html
2007-03-28
Yes -- a new release in only 3 months. This release contains
fixes and features that address the issues raised on the lists.
A summary of recent ksh93 changes:
1. Double precision floating point arithmetic with full C99
arithmetic support on systems that provide the C99
arithmetic functions. The numbers Inf and NaN can be
used in arithmetic expressions.
2. TAB-TAB completion generates a numbered list of
completions which the user can select.
3. Support for processing/handling multibyte locales (e.g.,
en_US.UTF-8, hi_IN.UTF-8, ja_JP.eucJP, zh_CN.GB18030,
zh_TW.BIG5 etc.) has been extensively revised, tested,
and is now supported even on the language level (e.g.
variable and function identifiers may contain locale
specific codeset characters).
4. /dev/(tcp|udp|sctp)/host/sevrice now handles IPv6
addresses on systems that provide getaddrinfo(3).
5. The ability to seek on a file by offset or content with
new redirection operators.
6. A new --showme option which allows portions of a script
to behave as if -x were specified while other parts
execute as usual. This simplifies the coding of make -n
style semantics at the script level by eliminating code
replication. In particular, io redirections are handled
by --showme.
7. The [[...]] operator =~ has been added which compares
the string to an extended regular expression rather than
== which compares against a shell pattern.
8. The printf(1) builtin has been extended to support the =
flag for centering a field. The # flag when used with
%d and %i provides values in units of thousands or 1024
respectively with an appropriate suffix added.
9. Example screenshots from joint work with the Solaris
ksh93 integration project are available here.
See the release change log for details:
http://www2.research.att.com/~gsf/download/release.2007-03-28.2007-01-11.html
2007-01-11
This release, almost a year from the last big release,
contains changes based on feedback from the { ast-users
ast-developers uwin-users uwin-developers } lists and the
ongoing ksh93-solaris integration project. Thanks to all
who helped. Our resolution this year is to increase release
frequency to keep internal and external source/binaries
more in sync. See the release change log for details:
http://www2.research.att.com/~gsf/download/release.2007-01-11.2006-02-14.html
2006-05-01
Change log at
http://www2.research.att.com/~gsf/download/release.2006-05-01.2006-02-14.html
is empty.
This package will install tcsh in the /bin directory (not ${LOCALBASE}/bin).
DragonFly already has tcsh in the base system, so this package will replace
it with no ability to restore the system version. This is not desired.
shells/tcsh still works should there be any need for a pkgsrc version installed
at ${LOCALBASE}/bin.
mksh R40f fixes a critical bug as well as this:
[tg, RT] Implement fcntl(2)-based advisory locking as an alternative
iff flock(2) is not found (LP: #912691); keep trying in the face of EINTR
[tg] Fix severe regression wrt. initialising tty(4) states
[tg] Improve testsuite, build-time checks and debugging output
[tg, RT, winstonw] Improve portability to BeOS (works), Cygwin (good),
Dell UNIX (works somewhat, but not with gcc), LynxOS (works somewhat),
NeXTstep (works but not OpenStep 4.2), USL C compiler, SCO OpenServer (good),
SCO UnixWare (good), Plan 9 (still broken), Syllable Desktop (broken?)
[tg] rlim_t is supposed to be unsigned
[tg] Some code, warning and spelling cleanup
[tg] New Build.sh environment configurable: AWK (= awk)
[tg, DONG-DONG YANG] Add safety net in the Emacs line editing code
[tg] No longer rely on env(1), id(1), printf(1) in the testsuite, and
strcasecmp(3), strcasestr(3), strncasecmp(3) in the code
[tg, stsc, RT] Reduce system requirements of check.pl further
mksh R40e is another must-have bugfix update:
[tg, Jilles Tjoelker] skip readonly check in unevaluated ternary twig
[tg, anonymous] fix all remaining ifs.sh testcases
[tg] No longer try to build with GCC and C99 extensions
[tg, Jilles Tjoelker] Do not expand aliases in COMSUB twice
[tg] Honour UTF-8 multi-byte character boundaries when doing partial
tab-completion insertions (LP: #909025) to fix RedHat BZ#745702
[tg] Fix R40 (BZ#496791) regression with IOACT in TIF (LP: #907224)
[tg, ft] Darn persistent history code worst offenders (LP: #906914)
[tg] Fix some gc-sections, GCC and Clang/scan-build warnings/issues
[tg, 28C3] dot.mkshrc hash functions: partially address LP: #909818
[tg] Only compile divmod(0x80000000, -1) code in when not unneeded
[tg, RT] Move mirtoconf checks and INCLUDES_ONLY parts of
sh.h around to ensure prerequisites are always available
[tg, RT, ir0nh34d] Pass mksh.exe to testsuite, if such thing is generated,
and deal with Cygwin passing just "mksh" in argv[0] in such cases
[tg] Imply -DMKSH_ASSUME_UTF8=0 on MSYS; optimise checks
[tg, Jb_boin] Fix regression introduced in R35b by jaredy's security
patch where TTIME trashed a non-TCOM string argument (e.g. in TFOR)
[tg] Better support for tcc; fix GCCism that accidentally crept in
[tg] Deal with UTF-8 when reporting jobs' commands
[RT] Add SkyOS to known OS list
[tg, RT] Support Minix in its variants Minix 3 and Ninix 3 better
[tg] Drop some Android-specific unused code (lsmod builtin)
[tg, RT, lewellyn] Support QNX and various versions of BSD/OS better
[tg] More code cleanup and new developer-only debugging functions
[tg, Andrew Kudryashov] Fix some tab completion related escaping bugs
[tg, draenog] Honour COLUMNS and LINES from the environment in scripts
[tg, winstonw] The sleep built-in utility now blocks more signals
[tg] Warn when using another deprecated function that will be removed
Security fix.
=== v0.9.15.1 15/03/2012 ===
* Corrected security bug allowing user to get out of the restricted
shell. Thank you bui from NBS System for reporting this grave issue!
=== v0.9.15 13/03/2012 ===
* Set the hostname to the "short hostname" in the prompt.
* Corrected traceback when "sudo" command was entered alone. Thank you
Kiran Reddy for reporting this.
* Added support for python2.3 as subprocess is not included by default.
* Corrected the 'strict' behavior when entering a forbidden path.
* Added short path promp support using the 'prompt_short' variable.
* Corrected stacktrace when group did not exist.
* Add support for empty prompt.
* Fixed bugs when using $() and ``.
* Corrected strict behavior to apply to forbidden path.
* Added support for wildcard '*' when using 'cd'.
* Added support for "cd -" to return to previous directory.
* Updated security issue with non printable characters permitting user
to get out of the limited shell.
* Now lshell automatically reload its configuration if the configuration
file is modified.
* Added possibility to have no "intro" when user logs in. (by setting
the intro configuration field to "")
* Corrected multiple commands over ssh, and aliases interpretation.
* Added possibility to use wildcards in path definitions.
* Finally corrected the alias replacement loop.
* new autorehash builtin to control how the internal command hash
table is maintained.
* globstar globbing to allow ** and *** expansions
* euid, euser, egid variables.
* wait built-in is now interruptible
* new anyerror variable to control error handling in pipelines
Upstream changes:
=== v0.9.14 27/10/2010 ===
* Corrected get_aliases function, as it was looping when aliases were
"recursive" (e.g. 'ls':'ls --color=auto')
* Added lsudo built-in command to list allowed sudo commands.
* Corrected completion function when 2 strings collided (e.g. ls and lsudo)
* Corrected the README's installation part (adding --prefix).
* Added possibility to log via syslog.
* Corrected warning counter (was counting minus 1).
* Added the possibility to disable the counter, and just warn the user
(withouht kicking him).
* Added possibility to configure prompt. Thank you bapt for the patch.
* Added possibility to set environment variables to users. Thank you bapt
for the patch.
* Added the 'history' built-in function.
=== v0.9.13 02/09/2010 ===
* Switched from deprecated popen2 to subprocess to be python2.6 compatible.
Thank you Greg Orlowski for the patch.
* Added missing builin commands when 'allowed' list was set to 'all'. For
example, the "cd" command was then missing.
* Added the "export" builtin function to export shell variables. Thank you
Chris for reporting this issue.
Changes: essentially bugfixes.
# [tg] New test.sh `-f' option (same as `-C fastbox')
# [tg] Drop using set -o noglob inside pushd/popd/dirs
# [tg] Use += more in dot.mkshrc and keep strings shorter
# [tg] Correct interworking between local and set -A
# [tg] Fix out-of-bounds memory access on strings of 32 KiB length
# [tg] MKSH_DISABLE_DEPRECATED (for integrators)
# [tg, Jilles Tjoelker] test(1) built-in behaves exactly as POSIX says
# [tg] Move compile-time assertions to Build.sh from misc.c#ifdef DEBUG
# [tg] Invocation documentation is at the bottom of Build.sh
# [tg] test.sh: verbosely look for perl(1) interpreter to use
# [tg] New tests for integers (base 1#36, base unspecified, base OOB)
# [tg] Correct error paths for typeset -n global state
# [tg] Deprecate interpreting "010" as octal number, will go
# [tg] Improvements re. integer handling; more explicit manpage text
# [tg] Do not use caddr_t on Linux, so dietlibc stops bitching
# [tg, Jilles Tjoelker] Catch division/modulo overflow 0x80000000/-1
# [tg] Emacs mode ^O regression fix when the fetched lines are edited
* [tg, Wouter Verhelst] Fix ${foo%\?} in -o sh
* [jonthn, Snader_LB] Fix spelling mistakes
* [cnuke] Fix bugs spotted during porting to OPENSTEP
* [tg, jg71] Unbreak building stristr with MKSH_ASSUME_UTF8 defined
* [tg] Fix most of the issues Jerker Bäck encountered on Interix
* [tg] Wrap access(2) as it may return false positive for X_OK on root
* [OpenBSD] Upper bound Emacs mode command repeat by input line length
* [tg] Improve CPPFLAGS mangling in Build.sh
* [Snader_LB] Several comment, documentation and website fixes/updates
* [tg] Avoid identifiers and cpp(1) macros with two underscores in a row,
and those with a trailing underscore; they are reserved for the OS
* [tg] Fix accidental behavioural change wrt some built-in parameters
* [RT, Chris “ir0nh34d” Sutcliffe] Port to MSYS
* [tg, Markus Duft, Bruno Haible] Interix select(2) bug workaround
* [tg] Manpage fixes
* [tg] Deprecate the “command line begins with ‘!’ for fc -e -” wbx hack
* [tg] Promote x=(a b); x+=(c d) to a core mksh(1) feature
* [tg] Testsuite fixes for Hurd, MSYS; warning fixes for dietlibc
* [tg] Fix R40 regression misparsing $(case x in (x) :; esac)
Changes:
Improved error handling in POSIX emulation, ${NAME:OFFSET:LENGTH}
syntax supports negative LENGTHs, new parameter expansion flag
(g:opts:) which escapes sequences like the echo and print builtins,
the region_highlight array is now updated dynamically as the command
line is edited and the zsh/parameter module has a new array $usergroups
which contains the names of system groups.
1. New Features in Bash
a. `exec -a foo' now sets $0 to `foo' in an executable shell script without a
leading #!.
b. Subshells begun to execute command substitutions or run shell functions or
builtins in subshells do not reset trap strings until a new trap is
specified. This allows $(trap) to display the caller's traps and the
trap strings to persist until a new trap is set.
c. `trap -p' will now show signals ignored at shell startup, though their
disposition still cannot be modified.
d. $'...', echo, and printf understand \uXXXX and \UXXXXXXXX escape sequences.
e. declare/typeset has a new `-g' option, which creates variables in the
global scope even when run in a shell function.
f. test/[/[[ have a new -v variable unary operator, which returns success if
`variable' has been set.
g. Posix parsing changes to allow `! time command' and multiple consecutive
instances of `!' (which toggle) and `time' (which have no cumulative
effect).
h. Posix change to allow `time' as a command by itself to print the elapsed
user, system, and real times for the shell and its children.
j. $((...)) is always parsed as an arithmetic expansion first, instead of as
a potential nested command substitution, as Posix requires.
k. A new FUNCNEST variable to allow the user to control the maximum shell
function nesting (recursive execution) level.
l. The mapfile builtin now supplies a third argument to the callback command:
the line about to be assigned to the supplied array index.
m. The printf builtin has a new %(fmt)T specifier, which allows time values
to use strftime-like formatting.
n. There is a new `compat41' shell option.
o. The cd builtin has a new Posix-mandated `-e' option.
p. Negative subscripts to indexed arrays, previously errors, now are treated
as offsets from the maximum assigned index + 1.
q. Negative length specifications in the ${var:offset:length} expansion,
previously errors, are now treated as offsets from the end of the variable.
r. Parsing change to allow `time -p --'.
s. Posix-mode parsing change to not recognize `time' as a keyword if the
following token begins with a `-'. This means no more Posix-mode
`time -p'. Posix interpretation 267.
t. There is a new `lastpipe' shell option that runs the last command of a
pipeline in the current shell context. The lastpipe option has no
effect if job control is enabled.
u. History expansion no longer expands the `$!' variable expansion.
v. Posix mode shells no longer exit if a variable assignment error occurs
with an assignment preceding a command that is not a special builtin.
w. Non-interactive mode shells exit if -u is enabled and an attempt is made
to use an unset variable with the % or # expansions, the `//', `^', or
`,' expansions, or the parameter length expansion.
x. Posix-mode shells use the argument passed to `.' as-is if a $PATH search
fails, effectively searching the current directory. Posix-2008 change.
2. New Features in Readline
a. The history library does not try to write the history filename in the
current directory if $HOME is unset. This closes a potential security
problem if the application does not specify a history filename.
b. New bindable variable `completion-display-width' to set the number of
columns used when displaying completions.
c. New bindable variable `completion-case-map' to cause case-insensitive
completion to treat `-' and `_' as identical.
d. There are new bindable vi-mode command names to avoid readline's case-
insensitive matching not allowing them to be bound separately.
e. New bindable variable `menu-complete-display-prefix' causes the menu
completion code to display the common prefix of the possible completions
before cycling through the list, instead of after.
to trigger/signal a rebuild for the transition 5.10.1 -> 5.12.1.
The list of packages is computed by finding all packages which end
up having either of PERL5_USE_PACKLIST, BUILDLINK_API_DEPENDS.perl,
or PERL5_PACKLIST defined in their make setup (tested via
"make show-vars VARNAMES=..."), minus the packages updated after
the perl package update.
sno@ was right after all, obache@ kindly asked and he@ led the
way. Thanks!
pkgsrc changes:
- Add license
Upstream changes:
=== v0.9.12 04/05/2010 ===
* A minor bug was inserted in version 0.9.11 with the sudo command.
It has been corrected in this version.
=== v0.9.11 27/04/2010 ===
* Corrects traceback when executing a command that had a python homonym
(e.g. "print foo" or "set"). (Closes: SF#2969631)
* Corrected completion error when using "~/". Thanks to Piotr Minkina for
reporting this.
* Corrected the get_aliases function.
* Corrected interpretation of ~user. Thank you Adrien Urban for reporting
this.
* The 'home_path' variable is being deprecated from this version and on.
Please use your system's tools to set a user's home directory.
It will be completely removed in the next version of lshell.
* Corrected shell variable and wildcards expansions when checking a command.
Thank you Adrien Urban for reporting this.
* Added possibility to allow/forbid scp upload/download using scp_upload
and scp_download variables.
* Corrected bug when using the "command=" in openSSH's authorized_keys.
lshell now takes into account the SSH_ORIGINAL_COMMAND environment
variable. Thank you Jason Heiss for reporting this.
* Corrected traceback when aliases is not defined in configuration, and
command is sent over SSH. Thank you Jason Heiss for reporting this.
sorry) of 'b', 'e' and 'w' commands in vi editing, when confronted with
a '_' character - this patch makes tcsh consider '_' characters to be part
of the word.
1) osh globbing is now handled by the main osh process, allowing
(for example) `mkdir some_really_long_directory_name... ; cd
some*...' and globbing for other special built-in commands as well.
2) A new, osh history-file-support feature has been added to save
the user's command-line history to the user $h/.osh.history file
if/when this file exists upon shell invocation.
0.9.10
. Corrected minor bug in the aliases function that appeared in the
previous version. Thank you Piotr Minkina for reporting this.
0.9.9
. Added the possibility to configure introduction prompt.
. Replaced "joker" by "warnings" (more elegant)
. Possibility of limiting the history file size.
. Added lpath built-in command to list allowed and denied path.
Thanks to Adrien Urban.
. Corrected bug when using "~" was not parsed as "home directory" when
used in a command other than "cd". Thank you Adrien Urban finding
this.
. Corrected minor typo when warning for a forbidden path.
. If $(foo) is present in the line, check if foo is allowed before
executing the line. Thank you Adrien Urban for pointing this out!
. Added the possibility to list commands allowed to be executed using
sudo.
The new configuration field is sudo_commands.
. Added the clear(1) command as a built-in command.
. Added '$(' and '${' in the forbidden list by default in the
configuration
file.
. Now check the content of curly braces withariables '${}'. Thank you
Adrien Urban for reporting this.
. Added possibility to set history file name using history_file in the
configuration file.
. Corrected the bug when using '|', '&' or ';' over ssh. Over ssh
forbidden
characters refers now to the list provided in the "forbidden" field.
Thank you Jools Wills for reporting this!
. It now possible to use "&&" and "||" even if "&" and/or "|" are in the
forbidden list. In order to forbid them too, you must add them
explicitely in the forbidden list. Thank you Adrien Urban for this
suggestion.
. Fixed aliases bug that replaced part of commands rendering them
unusable.
e.g. aliasei:vim replaced the view command by vimew.
. Added a logrotate file for lshell log files.
. Corrected parsing of commands overssh to be checked by the same
function
used by the lshell CLI.
Thank you Adrien Urban for you security audit and excellent ideas!
0.9.8
. Major bug fix. lshell did not launch on python 2.4 and 2.5
(https://sourceforge.net/projects/lshell/forums/forum/778301/topic/347
4668)
. Added aliases for commands over SSH.
0.9.7
. Cleaned up the Python code
. Corrected crash when directory permission denied
(Closes: https://sourceforge.net/tracker/?func=detail&aid=2875374&grou
p_id=215792&atid=1035093)
. Added possibility to set the home_path option using the '%u' flag.
(e.g. '/var/chroot/%u' where '%u' will be replaced by the user's
username)
. Now replaces "~" by user's home directory.
0.9.6
. Major security fix. User had access to all files located in forbidden
directories
(Closes: https://sourceforge.net/tracker/?func=detail&aid=2838542&grou
p_id=215792&atid=1035093)
. Corrects RPM generation bug
(Closes: https://sourceforge.net/tracker/index.php?func=detail&aid=283
8283&group_id=215792&atid=1035093)
. lshell exits gracefully when user home directory doesn't exist
0.9.5
. Minor release
. Changed lshell's group from lshellg to lshell (this should not have
an impact on older installations)
. Minor typo correction in the lshell.py code
I am pleased to announce that tcsh-6.17 is now available; this is a mainly a
bug fix release with the exception of these three feature additions:
10. always save the whole command, not just the first 80 chars of it.
4. Add autoexpand=onlyhistory (Don Estabrook, m66)
3. Add history in loops (Laurence Darby, m48)
Please consult the Fixes files for a complete list of changes.
Some highlighted changes (for full details, see the ChangeLog):
The command "emulate <mode> -c ..." evaluates an expression in a given
emulation. The emulation is sticky for functions defined within the
expression.
The variable CORRECT_IGNORE gives a pattern that can be ignored
in spelling correction. CORRECT_IGNORE='_*' ignores completion functions.
The option POSIX_ALIASES improves compatibility of aliases with other
shells.
The variable ZSH_PATCHLEVEL can be used to test for unreleased versions of
the shell; it is present but less useful in released versions.
The variables ZLE_REMOVE_SUFFIX_CHARS and ZLE_SPACE_SUFFIX_CHARS allow more
control over the way automatically removed suffixes are treated in
completion.
This document details the changes between this version, bash-4.1-rc,
and the previous version, bash-4.1-beta.
1. Changes to Bash
a. Fixed a bug that caused printf to not return a partial value when it
encountered an error while converting an integer argument.
b. Fixed a bug that caused setting one of the compatNN options to not
turn off the others.
c. The (undocumented) --wordexp option is no longer included by default.
d. Fixed a bug in conditional command execution that caused it to not
correctly ignore the exit status under certain circumstances.
e. Added a configure-time check for correctly-working asprintf/snprintf.
f. Fixed some problems with line number calculation and display when sourcing
a file in an interactive shell.
g. Fixed a bug that caused the shell to crash when using `declare -A foo=bar'.
h. Fixed a bug that caused an off-by-one error when calculating the directories
to display with the PROMPT_DIRTRIM option.
2. Changes to Readline
a. Fixed a bug that caused applications using the callback interface to not
react to SIGINT (or other signals) until another character arrived.
------------------------------------------------------------------------------
This document details the changes between this version, bash-4.1-beta,
and the previous version, bash-4.1-alpha.
1. Changes to Bash
a. Fixed a bug in mapfile that caused the shell to crash if it was passed the
name of an associative array.
b. Fixed a bug that caused the shell to incorrectly split case patterns if
they contained characters in $IFS.
c. Fixed a bug that caused the shell to set $? to the wrong value when using
a construct ending with a variable assignment with set -x enabled and PS4
containing a command substitution.
d. Fixed a bug that caused the shell to read commands incorrectly if an
expansion error occurred under certain conditions in a user-specified
subshell.
e. Fixed a bug that caused the shell to set $? incorrectly if a parse error
occurred in an evaluation context ("eval", trap command, dot script, etc.)
f. Fixed a bug that caused the shell to attempt command substitution
completion within a single-quoted string.
g. Fixed a bug that caused the shell to insert an extra single quote during
word completion.
h. Fixed a bug that caused the shell to crash if invoked with the environment
variable EMACS having a null value.
i. Fixed a bug that caused bash to incorrectly report the presence of new
mail in a `maildir' environment.
j. Fixed a bug that caused the shell to not recognize a here-document ending
delimiter inside a command substitution.
k. Fixed a bug that caused the shell to crash when a a dynamic array variable
was assigned a scalar value.
2. Changes to Readline
3. New Features in Bash
a. The mapfile/readarray builtin no longer stores the commands it invokes via
callbacks in the history list.
b. There is a new `compat40' shopt option.
c. The < and > operators to [[ do string comparisons using the current locale
only if the compatibility level is greater than 40 (set to 41 by default).
4. New Features in Readline
------------------------------------------------------------------------------
This document details the changes between this version, bash-4.1-alpha,
and the previous version, bash-4.0-release.
1. Changes to Bash
a. Fixed bugs in the parser involving new parsing of the commands contained
in command substitution when the substitution is read.
b. Fixed a bug that caused the shell to dump core when performing programmable
completion using a shell function.
c. Fixed a bug in `mapfile' that caused it to invoke callbacks at the wrong
time.
d. Fixed a bug that caused the shell to dump core when listing jobs in the
`exit' builtin.
e. Fixed several bugs encountered when reading subscripts in associative
array assignments and expansions.
f. Fixed a bug that under some circumstances caused an associative array to
be converted to an indexed array.
g. Fixed a bug that caused syntax errors and SIGINT interrupts to not set
$? to a value > 128.
h. Fixed a bug that caused the shell to remove FIFOs associated with process
substitution inside shell functions.
i. Fixed a bug that caused terminal attributes to not be reset when the
`read' builtin timed out.
j. Fixed a bug in brace expansion that caused unwanted zero padding of the
expanded terms.
k. Fixed a bug that prevented the |& construct from working as intended when
used with a simple command with additional redirections.
l. Fixed a bug with the case statment ;& terminator that caused the shell to
dereference a NULL pointer.
m. Fixed a bug that caused assignment statements or redirections preceding
a simple command name to inhibit alias expansion.
n. Fixed the behavior of `set -u' to conform to the latest Posix interpretation:
every expansion of an unset variable except $@ and $* will cause the
shell to exit.
o. Fixed a bug that caused double-quoted expansions of $* inside word
expansions like ${x#$*} to not expand properly when $IFS is empty.
p. Fixed a bug that caused traps to set $LINENO to the wrong value when they
execute.
q. Fixed a bug that caused off-by-one errors when computing history lines in
the `fc' builtin.
r. Fixed a bug that caused some terminating signals to not exit the shell
quickly enough, forcing the kernel to send the signal (e.g., SIGSEGV)
multiple times.
s. Fixed a bug that caused the shell to attempt to add empty lines to the
history list when reading here documents.
t. Made some internal changes that dramatically speeds up sequential indexed
array access.
u. Fixed a bug that caused the shell to write past the end of a string when
completing a double-quoted string ending in a backslash.
v. Fixed a bug that caused the shell to replace too many characters when a
pattern match was null in a ${foo//bar} expansion.
w. Fixed bugs in the expansion of ** that caused duplicate directory names
and the contents of the current directory to be omitted.
x. Fixed a bug that caused $? to not be set correctly when referencing an
unset variable with set -u and set -e enabled.
y. Fixed a bug caused by executing an external program from the DEBUG trap
while a pipeline was running. The effect was to disturb the pipeline
state, occasionally causing it to hang.
z. Fixed a bug that caused the ** glob expansion to dump core if it
encountered an unsearchable directory.
aa. Fixed a bug that caused `command -v' and `command -V' to not honor the
path set by the -p option.
bb. Fixed a bug that caused brace expansion to take place too soon in some
compound array assignments.
cc. Fixed a bug that caused programmable completion functions' changes to
READLINE_POINT to not be reflected back to readline.
dd. Fixed a bug that caused the shell to dump core if a trap was executed
during a shell assignment statement.
ee. Fixed an off-by-one error when computing the number of positional
parameters for the ${@:0:n} expansion.
ff. Fixed a problem with setting COMP_CWORD for programmable completion
functions that could leave it set to -1.
gg. Fixed a bug that caused the ERR trap to be triggered in some cases where
`set -e' would not have caused the shell to exit.
hh. Fixed a bug that caused changes made by `compopt' to not persist past the
completion function in which compopt was executed.
ii. Fixed a bug that caused the list of hostname completions to not be cleared
when HOSTNAME was unset.
jj. Fixed a bug that caused variable expansion in here documents to look in
any temporary environment.
kk. Bash and readline can now convert file names between precomposed and
decomposed Unicode on Mac OS X ("keyboard" and file system forms,
respectively). This affects filename completion (using new
rl_filename_rewrite_hook), globbing, and readline redisplay.
ll. The ERR and EXIT traps now see a non-zero value for $? when a parser
error after set -e has been enabled causes the shell to exit.
mm. Fixed a bug that in brace expansion that caused zero-prefixed terms to
not contain the correct number of digits.
nn. Fixed a bug that caused the shell to free non-allocated memory when
unsetting an associative array which had had a value implicitly assigned
to index "0".
oo. Fixed a memory leak in the ${!prefix@} expansion.
pp. Fixed a bug that caused printf to not correctly report all write errors.
qq. Fixed a bug that caused single and double quotes to act as delimiters
when splitting a command line into words for programmable completion.
rr. Fixed a bug that caused ** globbing that caused **/path/* to match every
directory, not just those matching `path'.
ss. Fixed a bug that caused the shell to dump core when running `help' without
arguments if the terminal width was fewer than 7 characters.
2. Changes to Readline
a. The SIGWINCH signal handler now avoids calling the redisplay code if
one arrives while in the middle of redisplay.
b. Changes to the timeout code to make sure that timeout values greater
than one second are handled better.
c. Fixed a bug in the redisplay code that was triggered by a prompt
containing invisible characters exactly the width of the screen.
d. Fixed a bug in the redisplay code encountered when running in horizontal
scroll mode.
e. Fixed a bug that prevented menu completion from properly completing
filenames.
f. Fixed a redisplay bug caused by a multibyte character causing a line to
wrap.
g. Fixed a bug that caused key sequences of two characters to not be
recognized when a longer sequence identical in the first two characters
was bound.
h. Fixed a bug that caused history expansion to be attempted on $'...'
single-quoted strings.
i. Fixed a bug that caused incorrect redisplay when the prompt contained
multibyte characters in an `invisible' sequence bracketed by \[ and
\].
j. Fixed a bug that caused history expansion to short-circuit after
encountering a multibyte character.
3. New Features in Bash
a. Here-documents within $(...) command substitutions may once more be
delimited by the closing right paren, instead of requiring a newline.
b. Bash's file status checks (executable, readable, etc.) now take file
system ACLs into account on file systems that support them.
c. Bash now passes environment variables with names that are not valid
shell variable names through into the environment passed to child
processes.
d. The `execute-unix-command' readline function now attempts to clear and
reuse the current line rather than move to a new one after the command
executes.
e. `printf -v' can now assign values to array indices.
f. New `complete -E' and `compopt -E' options that work on the "empty"
completion: completion attempted on an empty command line.
g. New complete/compgen/compopt -D option to define a `default' completion:
a completion to be invoked on command for which no completion has been
defined. If this function returns 124, programmable completion is
attempted again, allowing a user to dynamically build a set of completions
as completion is attempted by having the default completion function
install individual completion functions each time it is invoked.
h. When displaying associative arrays, subscripts are now quoted.
i. Changes to dabbrev-expand to make it more `emacs-like': no space appended
after matches, completions are not sorted, and most recent history entries
are presented first.
j. The [[ and (( commands are now subject to the setting of `set -e' and the
ERR trap.
k. The source/. builtin now removes NUL bytes from the file before attempting
to parse commands.
l. There is a new configuration option (in config-top.h) that forces bash to
forward all history entries to syslog.
m. A new variable $BASHOPTS to export shell options settable using `shopt' to
child processes.
n. There is a new confgure option that forces the extglob option to be
enabled by default.
o. New variable $BASH_XTRACEFD; when set to an integer bash will write xtrace
output to that file descriptor.
p. If the optional left-hand-side of a redirection is of the form {var}, the
shell assigns the file descriptor used to $var or uses $var as the file
descriptor to move or close, depending on the redirection operator.
q. The < and > operators to the [[ conditional command now do string
comparison according to the current locale.
r. Programmable completion now uses the completion for `b' instead of `a'
when completion is attempted on a line like: a $(b c.
s. Force extglob on temporarily when parsing the pattern argument to
the == and != operators to the [[ command, for compatibility.
t. Changed the behavior of interrupting the wait builtin when a SIGCHLD is
received and a trap on SIGCHLD is set to be Posix-mode only.
u. The read builtin has a new `-N nchars' option, which reads exactly NCHARS
characters, ignoring delimiters like newline.
4. New Features in Readline
a. New bindable function: menu-complete-backward.
b. In the vi insertion keymap, C-n is now bound to menu-complete by default,
and C-p to menu-complete-backward.
c. When in vi command mode, repeatedly hitting ESC now does nothing, even
when ESC introduces a bound key sequence. This is closer to how
historical vi behaves.
d. New bindable function: skip-csi-sequence. Can be used as a default to
consume key sequences generated by keys like Home and End without having
to bind all keys.
e. New application-settable function: rl_filename_rewrite_hook. Can be used
to rewite or modify filenames read from the file system before they are
compared to the word to be completed.
f. New bindable variable: skip-completed-text, active when completing in the
middle of a word. If enabled, it means that characters in the completion
that match characters in the remainder of the word are "skipped" rather
than inserted into the line.
g. The pre-readline-6.0 version of menu completion is available as
"old-menu-complete" for users who do not like the readline-6.0 version.
h. New bindable variable: echo-control-characters. If enabled, and the
tty ECHOCTL bit is set, controls the echoing of characters corresponding
to keyboard-generated signals.
i. New bindable variable: enable-meta-key. Controls whether or not readline
sends the smm/rmm sequences if the terminal indicates it has a meta key
that enables eight-bit characters.
Changes:
1) This update fixes a compilation problem on AIX caused by not
wrapping WCOREDUMP(s) with #ifdef WCOREDUMP ... #endif.
2) General code cleanup and rechecking w/ splint(1) reduces
unnecessary code duplication and eases future maintenance.
3) This update adds the program name to osh diagnostics (e.g.,
"osh: syntax error") for the sake of user friendliness.
[tg] Shut up a bogus gcc warning during configuration process
[tg] Spell AT&T consistently in the source code
[tg] Tweak mksh(1) manual page, from wbx@ and «lewellyn:#ksh»
[tg] dot.mkshrc: fix $@ vs. $* mix-up
[tg] dot.mkshrc: add DJB cdb hash function
[tg] Sync with oksh: fix Vi editing mode word erase handling, again
[tg] Skip whitespace between POSIX style shell function name and its definition parenthesēs during detection if an alias of the same name already exists to be more robust (Debian Closes: #535970)
[tg] Build system improvements for ACK and nwcc, both on Debian sid
[tg] Fix spelling error in changelog discovered by Lintian
[tg] Aligh “set -o nounset” / “set -u” behaviour with future POSIX standard, as discussed with GNU bash maintainers, David Korn from AT&T ksh93, and The Open Group; prompted by use in Debian; Closes: #539538
[tg] add an unsupported way to make printf(1) a builtin
[tg] Build system and regression test code and comment improvements: better and more comments matching reality better; more reliability w.r.t. passed CPPFLAGS; more of the MKSH_SMALL changes may be overridden, all of them are now enumerated on the webpage; fixed some breakage; portability
[tg] MKSH_NOPWNAM and MKSH_SMALL will now both disable the ~fac/ (homedir) expansion code wholly if defined, not just getpwnam(3) calls
[tg] shells without job control no longer define the standard “stop” and “suspend” aliases (they are pointless anyway); regression tests know
[tg] use system RCS ID macros on MirBSD if decent enough
[tg] shut up bogus gcc 4.5/trunk warnings caused by over-optimisation
[tg] restore ANSI C compilability broken in R38 (speed up, even)
[tg] use memcpy(3) ipv strlcpy(3) if possible and safe and secure
additional environment variables.
Note to packagers:
packages installing additional completion files should drop
them into ${DESTDIR}${PREFIX}/share/bash-completion.d
with the name of the package as file name.
bash-completion (1.0)
[ Guillaume Rousse ]
* Make bibtex complete on .aux files
* Add .xvid and .XVID to player completion
* Added cowsay/cowthink completion
* Added brctl completion
* Added cpan2dist completion
* Added qemu completion
* Added net-tools (mii-tool and mii-diag) completions
* Added minicom completion
* Added quota-tools completion
* Added rdesktop completion
* Added tightvncviewer completion
* Cleanup screen completion, and make it completes on options
[ David Paleino ]
* Added .kar to Timidity completion.
* Fix killall completion, remove trailing ":" on certain process
names
* Fix man -l completing filenames (Debian: #497074)
* (Partly) fixed java classes completion (Debian: #496828). Look for
FIXME in source.
* Dump to /dev/null error message from look(1) with no arguments
(Debian: #495142)
* Set ssh as default for rsync (was rsh) (Debian: #492328)
* Added .oga, .ogv, .ogx to mplayer completion (Debian: #496162)
* Added .epub to unzip|zipinfo completion (Debian: #492476)
* Added ssh-copy-id completion (Debian: #491856)
* Moved ssh completion to separate file (Debian: #360628)
* Bogus completion when mounting subdirs fixed (Debian: #322238)
* Fix `apt-cache showsrc` completing only on source package names
(Debian: #361535)
* Fixed bugs with gdb completion:
- when an empty directory is in $PATH (thanks to Morita Sho)
(Debian: #497597)
- when a non-existing directory is in $PATH (Debian: #499780)
* Fix missing completion for "-n" and "-e" (we were using echo, now
using printf) (thanks to Morita Sho) (Debian: #498105)
* Fixed gpg completion:
- --@(export|@(?(l|nr|nrl)sign|edit)-key)) (Debian: #500316)
- -@(r|-recipient))
* Fixed .cb[rz] completion for evince (Debian: #502885)
* Added gksudo, gksu, kdesudo completion
* Added apache2ctl completion
* Added gpg2 completion (Debian: #489927)
* Fixed mplayer -skin completion (Debian: #501473)
* Fixed errors with POSIX enabled (Debian: #502804)
* Fixed dpkg-source wrong exit() with return() (Debian: #)
* Added --schedule-only to aptitude's completion (Debian: #502664)
* Added build-dep to aptitude's completion (Debian: #495883)
* Added support for `-F configfile' to _known_hosts(), ssh, scp and
sftp, thanks to Freddy Vulto (Debian: #504141)
* Fixed sed quoting bug in _known_hosts(), thanks to Freddy Vulto
(Debian: #504650)
* Allow `Host(Name)' in ssh config file to be indented
* Allow `Host(Name)' in ssh config file to have trailing comment.
* Allow for comments in known_hosts files (Debian: #511789)
* Fixed perl -I/-x completion, thanks to Freddy Vulto
(Debian: #504547)
* README updated: explain how to use bash-completion correctly.
(Debian: #506560)
* TODO updated: the Alioth team is now upstream.
* Added qdbus completion, thanks to Terence Simpson (Ubuntu: #257903)
* Added monodevelop and mdtool completions.
* Split subversion-related completions to contrib/_subversion
(prefixed with _ to avoid file conflicts with upstream's one)
* Fixed completion of environment variables, thanks to Morita Sho
(Debian: #272660)
* Fix dpkg completion bug: it listed only non-Essential packages
(Debian: #511790)
* Fixed _dpkg_source completion (Debian: #503317)
* Added _parse_help() to try to parse options listed in $command
--help
* Fixed gzip completion to use _parse_help(), since the available
options vary with distributions
* Added to_review/ directory, where completions needing a review would
go. After it gets accepted, the completion would go into contrib/.
* Remove unused UNAME local variable in _info() (Debian: #501843)
* AUTHORS added
* Make _alias() use _get_cword
* Added .zip to jar completions (Debian: #521041)
* Merge from Gentoo:
- fix 'find' completion so that it properly completes on -?(i)whilename.
Patch by Ciaran McCreesh.
- use make -qp to parse the Makefile for us, so we get proper completion
on things like pattern rules. Patch by Mike Kelly <pioto@exherbo.org>.
- complete on gkrellm2 as well. Patch by Aaron Walker.
- fix CVS completion
* Merge from Ubuntu:
- consume error messages in configure completion (Ubuntu: #223882)
(Mika Fischer)
- quote $xspec in _filedir_xspec in case it is empty, which would
cause errors if there was no match under failglob. (Ubuntu: #194419)
(Mika Fischer)
* debian/links fixed (Debian: #494292)
* debian/control:
- fixed typo in the long description
- added Vcs-* fields
* debian/install:
- correctly install contrib/* under /etc/bash_completion.d/
* debian/copyright updated
* extra/dh_bash-completion:
- updated to support a list of files in debian/<package>.bash-completion
(Debian: #512917)
[ Ville Skyttä ]
* Added JPEG 2000 files to display completion, thanks to Bastien Nocera
(RedHat: #304771)
* Improved rpm macro completion.
* Added -E to rpm completion.
* Improved rpm backup file avoidance.
* Improved /var/log/rpmpkgs based rpm installed package completion.
* Improved performance of rpm -qa based rpm installed package completion.
* Improved features and performance of yum completion.
* Added support for p (POSIX) and x (x.org) man sections.
* Improved filename based man page completion.
* Added minimal sqlite3 completion.
* Improved getent completion (Ville Skyttä, Guillaume Rousse).
* (Re)fix gzip and bzip2 options completion.
* Improved svn filename completion (RedHat: #430059).
* Add lzma completion (Per Øyvind Karlsen, Ville Skyttä).
* Add .mp2 and .vdr to mplayer completion (RedHat: #444467).
* Add .mkv, .mp2 and .vdr to *xine completion (RedHat: #444467).
* Added lzop completion.
* Fix scp metacharacter escaping.
* Remove duplicate cpio completion, thanks to Freddy Vulto (Debian: #512823)
* Fix awk error in "modprobe -r /" completion (Debian: #512556).
* Expand ~foo to dir name more eagerly to avoid quoting issues.
* Fix -sourcepath handling in javadoc packages completion.
* Extract process name completion from _killall to _pnames, make it work
for others than Linux and FreeBSD.
* Fix process name completion with relative paths (RedHat: #484578).
* Use improved process name completion in pgrep in addition to killall.
* Enable pgrep and pkill completion if the commands are available, not just
on Linux and FreeBSD.
* Drop hg completion, an improved version is shipped with Mercurial
(contrib/bash_completion in the tarball).
* Make okular complete on same files as evince, thanks to Mary Ellen Foster
(RedHat: #486998).
* Apply ps2pdf completion to ps2pdf{12,13,14,wr} too.
* Simplify bash_completion.sh, return earlier in non-applicable environments.
* Remove obsolete --buildarch and --buildos rpm(build) completions.
* Add rpmbuild --target completion.
* Use "-profile help" to get mplayer and friends -profile completions.
* Fix local array initialization under bash 3.0, prevents "()" occurring in
file and dir name completions.
[ Freddy Vulto ]
* Restored `_display()' completion for `display' by removing
completion-by-extension for `display' (Alioth#311429)
* Removed duplicate completion option `-borderwidth' for `display'
* Prevent completion dir from being sourced twice if
BASH_COMPLETION_DIR and BASH_COMPLETION_COMPAT_DIR are equal (Alioth#311433)
* Make `_mii-tool()' and `_mii-diag()' POSIX-compliant
* Fix _isql completion waiting for grep input if $ODBCINI not set; handle
whitespace in $ODBCINI.
* Split vncviewer completion in _tightvncviewer() and _xvnc4viewer()
Added _realcommand() global function.
[ Jakob Unterwurzacher ]
* ps2pdf can run on .pdf files as well. (Debian: #516614, Ubuntu: #316943)
[ Santiago M. Mola ]
* Add .ape to mplayer supported extensions (Alioth#311510).
-- David Paleino <d.paleino@gmail.com> Wed, 25 Mar 2009 23:18:24 +0100
bash-completion (20080705) unstable; urgency=low
[ David Paleino ]
* Added more completions to imagemagick (thanks to Nelson A. de
Oliveira) (Debian: #487786)
* Added xrandr completion (thanks to Anton Khirnov) (Debian: #487825)
* Improving _gdb completion:
- $filenames to $default (Debian: #463969)
- also show directory names (i.e. compgen -d) in COMPREPLY.
- added . to $PATH, to allow debugging "local" executables.
- do not complete Bash's builtins (thanks to Morita Sho)
[ Luk Claes ]
* Remove use of ucf for /etc/bash-completion (Debian: #488171).
-- Luk Claes <luk@debian.org> Sat, 05 Jul 2008 16:14:15 +0200
bash-completion (20080617.5) unstable; urgency=medium
* Revert way of setting environment variables (Debian: #487774).
* Add equals sign to _get_cword for mutt_aliases (Debian: #482635).
* Enhance mlayer completion (Debian: #487826, #487838).
-- Luk Claes <luk@debian.org> Tue, 24 Jun 2008 19:50:57 +0200
bash-completion (20080617.4) experimental; urgency=low
[ David Paleino ]
* Merged Ubuntu changes:
- added quote(), quote_readline(), dequote() helper functions.
- added _remove_word()
- fixed _get_cword()
- refactored _filedir using quote_readline()
- refactored _filedir_xspec using quote_readline()
- fixed COMPREPLY's in _iwconfig
- fixed _cvs()
- _known_hosts(): use files from UserKnownHostsFile options in
addition to standard ones.
- fixed _command() to correctly prune the command line
- disabled completion of PostgreSQL users and databases
- fixed _java_packages()
- fixed _muttquery()
- added flv/FLV completion to mplayer
- added --installed to apt-cache
- only complete on filenames for aspell
- fixed code for exclusions compspecs
- added code to gracefully handle debug options (set +/-v)
-- Luk Claes <luk@debian.org> Mon, 23 Jun 2008 19:25:25 +0200
bash-completion (20080617.3) unstable; urgency=low
[ David Paleino ]
* Fixed IFS for filedir_xspec - Thanks to Stefan Lippers-Hollmann
(Debian: #487571)
[ Luk Claes ]
* Install dh-bash-completion to ease installation of completions.
-- Luk Claes <luk@debian.org> Mon, 23 Jun 2008 07:24:21 +0200
bash-completion (20080617.2) unstable; urgency=low
[ David Paleino ]
* New upstream release
- provide a manpage for extra/dh_bash-completion
- fix semi-serious problem with _filedir() (Debian: #487449)
* debian/rules:
- added rule to generate dh_bash-completion's manpage
* debian/install, debian/dirs:
- installing dh_bash-completion into /usr/bin
* debian/control:
- new package dh-bash-completion
[ Luk Claes ]
* Comment new package to make sure current fix gets in the archive first.
* Add compression completion for vi(m).
-- Luk Claes <luk@debian.org> Sun, 22 Jun 2008 19:47:23 +0200
bash-completion (20080617.1) unstable; urgency=medium
[ David Paleino ]
* Urgency set to medium because the package is currently unusable.
* New upstream sub-release
- fixed some typos here and there which prevented bash completions
at all (Debian: #487441).
- really closing Debian bug #455510.
-- Luk Claes <luk@debian.org> Sun, 22 Jun 2008 00:22:53 +0200
bash-completion (20080617) unstable; urgency=low
[ David Paleino ]
* New upstream release
- add more completions to aptitude (Debian: #432289)
- fixed UTF-8 problem with _get_cword(), thanks to
Andrei Paskevich (Debian: #472132)
- fixed autoremove completion, thanks to Flavio Visentin
(Debian: #474974)
- cmf and CMF added to playmidi completion (Debian: #365658)
- added rrdtool completion, thanks to Justin Pryzby (Debian: #428641)
- added OpenDocument completion for unzip/zipinfo (.od{f,g,p,s,t})
(Debian: #472940)
- fixed escaping problems with job control (i.e. disown, jobs, bg,
fg): the argument is now surrounded by "" (Debian: #347316)
- make mkdir complete also on filenames (Debian: #376433)
- {bz,z}{cat,cmp,diff,egrep,fgrep,grep,less,more} now should complete
on all filenames, not just compressed archives (just commented out)
(Debian: #455510)
- fixes Perl completion (Debian: #470742)
- fixes get_cword -> _get_cword typo (Debian: #478596)
- fixes _get_cword() function to properly handle filenames with
whitespaces (Debian: #394636, #468254, #474094)
- added .pdf.bz2 completion to evince (Debian: #424736)
- added .svg completion to display (Debian: #441017)
- added .m2ts completion to mplayer (Debian: #480879)
- added extra/dh_bash-completion to ease future rewrite of bc.
* debian/copyright - now in a fancier machine-parsable format.
* debian/control:
- added myself to Uploaders
- debhelper Build-Depends updated to >= 6.
* debian/watch:
- improved current watch line regex
- added (commented out) probable future watch line
* debian/compat bumped to 6
* debian/dirs, debian/install and debian/links added
* debian/rules:
- refactored to make use of debian/{dirs,install,links}
[ Steve Kemp ]
* Applied patch to fix completion of umount command.
(Debian: #470539)
* Fixed the completion of Perl manpages.
(Debian: #404976)
* Added 'aif' to the filenames offed for completion for mplayer.
(Debian: #474517)
* Allow tsocks completion.
(Debian: #409423)
* Update mutt completion to handle local usernames.
(Debian: #416655)
* Update apt-get completion to include the flag "--no-install-recommends"
(Debian: #475242)
-- Luk Claes <luk@debian.org> Sat, 21 Jun 2008 21:59:43 +0200
bash-completion (20060301-4) unstable; urgency=low
* Add some fixes from Ubuntu:
* Fix completion of filenames with spaces (Debian: #468254).
* Fix parsing of SSH config files (Debian: #435117).
* Change priority to standard (Debian: #471666).
* Add some more completions for xine (Debian: #452083, #471249).
* Fix completion of gzip (Debian: #351913).
* Also use $HOSTFILE in hostname completion (Debian: #400380).
-- Luk Claes <luk@debian.org> Sat, 22 Mar 2008 23:10:30 +0000
bash-completion (20060301-3) unstable; urgency=low
* Fix kpdf completion (Debian: #468163, #413374).
* Fix completion of - or -- with _command (Debian: #415276).
* Add sux to the complete -u list (Debian: #466089).
* Add dvipdfm to the list of dvi programs (Debian: #396644).
* Add --purge-unused option completion for aptitude (Debian: #438471).
* Add divx extension completion for mplayer (Debian: #444294).
* Add pdf.gz completion for evince (Debian: #456887).
* Add --remove-all completion for update-alternatives (Debian: #269173).
-- Luk Claes <luk@debian.org> Wed, 05 Mar 2008 22:57:27 +0100
bash-completion (20060301-2) unstable; urgency=low
* Take over the package.
-- Luk Claes <luk@debian.org> Wed, 27 Feb 2008 19:22:03 +0100
bash-completion (20060301-1) unstable; urgency=low
* Upload to unstable.
-- Matthias Klose <doko@debian.org> Sat, 09 Feb 2008 23:18:20 +0100
bash-completion (20060301-0ubuntu2) hardy; urgency=low
* Replace bash (<< 3.1dfsg-9), handle upgrade in preinst.
* Exclude hashed hostnames from ssh host completion results. Debian: #428085.
* Fix: ifup/down don't really complete. Debian: #463756.
* Allow perl completion to complete filenames, complete -I and -x arguments.
Debian: #443394.
* Add find -wholename completion. Debian: #431220.
* Handle whitespaces in $HOME for _known_hosts() completion. Debian: #414821.
* dpkg -L: complete for removed-but-not-purged packages. Debian: #372156.
* Complete for apt-get autoremove. Debian: #433542, #443816, #445332.
* Update completion for mplayer (mka/flac). Debian: #340452.
* Add ping6/fping6 completion. Debian: #413170.
* Handle whitespace in paths for mount/umount completion. Debian: #367957.
* apt-get: Support --auto-remove. Ubuntu: #60666.
-- Matthias Klose <doko@ubuntu.com> Sat, 09 Feb 2008 23:11:32 +0100
bash-completion (20060301-0ubuntu1) hardy; urgency=low
* Initial release, split out from the bash package.
The software currently is unsupported upstream.
* Don't try to set a readonly variable. Ubuntu: #149527.
* Support purge in apt-get auto completion (Mathias Gug). Ubuntu: #151677.
* evince: Autocomplete on cbr/cbz/djvu files. Ubuntu: #156200, #175220.
Debian: #400678.
* kdvi: complete .*\.dvi\.(gz|bz2). Ubuntu: #128234.
* kpdf: Complete postscript files. Ubuntu: #162319.
* Make completion working in the middle of a word (Adam Simpkins).
Ubuntu: #139666.
-- Matthias Klose <doko@ubuntu.com> Fri, 08 Feb 2008 16:46:34 +0100
* [tg] Fix regression tests on OSes insisting on a shebang (Cygwin)
* [Sean Boudreau] QNX 6.4.2 ed(1) is said to have the bugs fixed
* [tg] Build.sh bugfixes: -DMKSH_BINSHREDUCED can also
be given without -DMKSH_SMALL; allow HAVE_REALPATH=x and
HAVE_REVOKE=x in the environment to re-enable these even if
-DMKSH_SMALL disables them by default, like mknod already did
* [tg] -DMKSH_ASSUME_UTF8=0 skips the environment checks, like
-DMKSH_ASSUME_UTF8=1, but disables the utf8-mode
* [tg] Apply some more KNF – style(9) – to the source; clean it up
and further optimise for small size
* [OpenBSD] Fix segfaults caused by missing check for end of input
in the tokeniser on “let --” and other input
* [OpenBSD] Make Vi editing mode ^W behave like Emacs mode’s
* [tg] If no killpg(3) is avaiable, use kill(2) and hope it works
* [tg] -DMKSH_NO_LIMITS skips trying to build the ulimit code
0.9.4
. Log file name is now configurable using 'logfilename' variable
inside the configuration file
. Corrected aliases in lshell.conf to work with *BSD
0.9.3
. corrected major bug (alias related)
0.9.2
. added Force SCP directory feature
. added command alias feature
0.9.1
. loglevel can now be defined on global, group or user level
. corrected sftp support (broken since in 0.9.0)
0.9.0
. version jump to 0.9.0
. corrected bug in case PATH does not exist and allowed set to 'all'
. added support for UNIX groups in configuration file
. corrected major security bug
. corrected path completion
. added escape code handling
. added flexible +/- possibilities in configuration file
. now supports completion after '|', ';' and '&'
. Command test are also done after '|', ';' and '&'
. Doesn't list hidden directories by default
. 4 logging levels
. added 'strict' behaviour
When using the ** globbing operator, bash will incorrectly add an extra
directory name when the preceding directory name ends with `*' or an empty
string when there is no preceding directory name.
If the prompt length exactly matches the screen width, and the prompt ends
with invisible characters, readline positions the cursor incorrectly.
When parsing case statements in command substitutions, the shell did not
note that a newline is a shell metacharacter and can legally be followed
by a reserved word (e.g., `esac').
When not in a locale supporting multibyte characters, readline will
occasionally not erase characters between the cursor position and the end
of the line when killing text backwards.
If a SIGWINCH arrives while bash is performing redisplay, multi-line prompts
are displayed incorrectly due to the display code being called recursively.
Using an external command as part of the DEBUG trap when job control is
enabled causes pipelines to misbehave. The problem has to do with process
groups assigned to the pipeline and terminal.
A missing include file results in an empty function definition and a no-op
when checking whether or not the window size has changed.
Adding a null line to a here-document (e.g., by hitting EOF) causes the
shell to dump core attempting to dereference the NULL pointer.
There are several problems with the handling of $LINENO in an ERR trap.
Deferring handling of signals which should cause the shell to terminate until
it is "safe" to run the handler functions does not work for some terminating
signals.
When the fc builtin is run in a command substitution from a shell with history
enabled, it does not correctly calculate the command on which to operate.
Though references to $@ when there are no positional parameters will now
cause the shell to exit if the `errexit' option has been enabled, constructs
such as ${@:-foo} should not cause an exit.
A case statement using the ;& pattern terminator followed immediately by
"esac" caused a core dump due to a null pointer dereference.
When using the new |& operator following a simple command with a redirection,
the redirection of stderr through the pipe was not performed under certain
circumstances.
mksh R38b fixes the following problems:
* [André Wösten] Add __NO_EXT_QNX to avoid picking up the wrong
waitfor() from <libutil.h> in (while porting to) QNX 6.4
* [tg] Plug memory corruption issue introduced in R38
* [tg] Amend dot.mkshrc with a base64 en-/decoder in shell
* [tg] Import a manpage fix via OpenBSD from Alan R. S. Bueno
mksh R38 comes with these changes and fixes applied:
* [tg] Improve regression test output debugging
* [tg] Fix <libutil.h> prerequisites on MidnightBSD in mirtoconf
* [tg] Mention that RedHat BZ#496791 cannot currently be fixed in the
manpage by discouraging use of apostrophes in comments in comsubs; add
appropriate (expected-fail) regression tests
* [tg] Sync with OpenBSD ksh (mostly a no-op)
* [James Butler] Add search-history-up and search-history-down keybindings
(tcsh-like) to the Emacs command line editing mode
* [tg] Bind new search-history-{up,down} to ANSI PgUp and PgDn keys
* [tg] Document ANSI default keybindings (↑↓←→ Home End Del PgUp PgDn)
in the mksh(1) manual page as well
* [tg] Optimise internal UTF-8 handling code for size and reusability
* [tg] Incompatible change: ${foo:1:2} and ${#foo} now
operate on characters, not on bytes. Characters are octets (set +U)
or (utf8-mode) MirOS OPTU-8 multibyte characters (set -U)
* [tg] Improve regression tests relating to ${foo:1:2} and
${#foo} and let wc=1#x and utf8-mode
* [tg] Use per-file copyright notices, move global text to manpage
* [tg] Expose new MKSH_MIDNIGHTBSD01ASH_COMPAT ifdef; change it to
only trigger if FPOSIX (or MKSH_BINSHREDUCED and /bin/sh)
* [tg] Remove already-dead “#if 0” style debugging code
* [tg] Change some code into a more portable fashion, optimise
* [tg] Allow [[ $foo ]] (ksh93 extension) mentioned by pgas
* [tg] Clean up mksh and the contributed arc4random.c for some
conversion, enum and other warnings for gcc-snapshot trunk r147610
* [tg] Ensure no function uses more than 768 bytes of stack either
* [tg, wbx] Add extension to make “!string” lines work like in GNU bash
Upstream changes between osh-20081213 and osh-20090527 follow:
osh bug fixes:
1) This release fixes an `echo' bug that causes `echo ""' to print an
unnecessary diagnostic.
2) It also fixes a `sigign' bug that can cause incorrect signal ignoring
behavior for subshells.
New osh features:
1) This release adds `cd' as a synonym for the `chdir' special command.
2) It also adds $m as a special parameter for the value of the MANPATH
environment variable.
.[tg] Improve præprocessor detection/work in Build.sh
.[tg] Decouple MKSH_CONSERVATIVE_FDS from MKSH_SMALL
.[tg] Enable MKSH_CONSERVATIVE_FDS by default on Minix 3
.[tg] Work around the (in-)famous ACK "const" bug
.[tg] Optimise structure alignment and padding; Closes: #522778
.[tg] Retain LOCPATH (for glibc locale) in check.pl
.[tg] Document, simplify and clean up the code better
.[tg] Use mirbsd.org eMail addresses consistently
mksh R37b comes with the following fixes on top:
.[tg] Clean up build system and dot.mkshrc some more
.[tg] Add getrusage(2) implementation using times(3) if none found
.[tg] Add jobless mode (for Minix 3, Plan 9, .)
.[tg] Detect the Amsterdam Compiler Kit in the build system
.[tg] If no RLIM_INFINITY don.t try to do ulimit
.[tg] Work around gcc4 strict warnings vs. broken system headers
.[tg] Work around systems with mmap(2) but no munmap(2)
.[tg] Fix (disallow) bind key macro recursion (instead of beeping and going into an endless loop), allow multi-line bind key macros (mostly from Alexander Hall), remove dead code (the beeping) and optimise
.[tg] Add (commented out, undesired, standards compliance breaking) compatibility code to MidnightBSD 0.1 /bin/sh for ctriv
.[tg] Clarify the mksh(1) manual page even more
.[tg] Port to Minix 3 + GCC
mksh R37 has major standards compliance improvements:
.[tg] Rename -o utf8-hack to -o utf8-mode
.[tg] Fix spacing mode error (pasto) in the mdoc(7) format manpage
.[tg] Implement $((#.)) unsigned arithmetic calculation, needed for arc4random_uniform(3)-in-korn-shell implementation
.[tg] Really preserve LD_LIBRARY_PATH in check.pl
.[tg] New Build.sh option .-combine. for building mksh(1) at once with .-fwhole-program --combine. (gcc4, llvm-gcc4) if available
.[tg] Always set COLUMNS and LINES trying as hard as we can, using TIOCGWINSZ even if used without FTALKING, and with the sane 80x24 default if the ioctl(2) fails
.[tg] Handle _POSIX_VDISABLE being undefined (e.g. Linux/klibc)
.[tg] <sys/file.h> is only required for flock(2)
.[tg] Fix multi-column output routine for the corner case if the screen is less wide than one output column; 10x Gábor Gergely
.[tg] Fix ${foo/@(%)/\\x} in UTF-8 mode (utf_widthadj for control characters U+0080.U+009F is slightly broken; this fix shifts the brokenness into the command line editing mode only)
.[tg] Introduce mksh_ari_t and mksh_uari_t internal types to limit arithmetics to 32 bit on all systems; currently depending on the already-used standard int32_t and uint32_t types. Future expansion to 64 bit possible. Document that shell integer variables use this type.
.[tg] The variables PGRP, PPID, RANDOM and USER_ID are now unsigned
.[tg] Fix two off-by-ones breaking PS1 ending with a newline; bug reported by Matthias Diener
.[tg] Just pass through C1 control characters for now
.[tg] Code and internal interfaces cleanup
.[tg] Regression test fixes for Cygwin env(1) being unsorted
.[tg] Replace the memory allocator by something equally simple and homegrown but optimised for use with mksh and free checking
.[tg] Import a couple of minor fixes (e.g. spelling) from oksh
.[tg] Fix problems with "set -e" for real; from oksh, Closes: #518359
.[tg] In "set -o posix" mode, have limited echo(1) to improve standards compliance; the exact feature set is open for discussion, e.g. with pkgsrc® people; for now, only -n as first arg
.[tg] Make test builtin operator precedence consistent; from oksh
.[tg] Revamp and fold and enhance the regression tests
.[tg] Document somewhat surprising behaviour in mksh(1) better; here: [ x -eq y ]; for gps23 from #ksh
.[tg] Reduce memory consumption by allocator simplification
.[tg] Fix bugs spotted by DEC ucode cc (ULTRIX) and gcc 1.42 (BSD/OS)
.[laffer1] Make mksh the default /bin/sh in MidnightBSD
quite simply using a configuration file. It becomes easy to restrict user's
access to a limited set of commands, chosing to allow any command over SSH
(e.g. SCP,SFTP,rsync,etc.).
OK'd by seb@
Since two people already asked for it, here's the package, but
maintainer is set to pkgsrc-users.
Bash is an sh-compatible shell that incorporates useful features from
the Korn shell (ksh) and C shell (csh). It is intended to conform to
the IEEE POSIX P1003.2/ISO 9945.2 Shell and Tools standard.
It offers functional improvements over sh for both programming and
interactive use; these include command line editing, unlimited size
command history, job control, shell functions and aliases, indexed
arrays of unlimited size, and integer arithmetic in any base from two
to sixty-four. In addition, most sh scripts can be run by Bash without
modification.
This package contains the outdated version 3 of bash.
1. New Features in Bash
a. When using substring expansion on the positional parameters, a starting
index of 0 now causes $0 to be prefixed to the list.
b. The `help' builtin now prints its columns with entries sorted vertically
rather than horizontally.
c. There is a new variable, $BASHPID, which always returns the process id of
the current shell.
d. There is a new `autocd' option that, when enabled, causes bash to attempt
to `cd' to a directory name that is supplied as the first word of a
simple command.
e. There is a new `checkjobs' option that causes the shell to check for and
report any running or stopped jobs at exit.
f. The programmable completion code exports a new COMP_TYPE variable, set to
a character describing the type of completion being attempted.
g. The programmable completion code exports a new COMP_KEY variable, set to
the character that caused the completion to be invoked (e.g., TAB).
h. If creation of a child process fails due to insufficient resources, bash
will try again several times before reporting failure.
i. The programmable completion code now uses the same set of characters as
readline when breaking the command line into a list of words.
j. The block multiplier for the ulimit -c and -f options is now 512 when in
Posix mode, as Posix specifies.
k. Changed the behavior of the read builtin to save any partial input received
in the specified variable when the read builtin times out. This also
results in variables specified as arguments to read to be set to the empty
string when there is no input available. When the read builtin times out,
it returns an exit status greater than 128.
l. The shell now has the notion of a `compatibility level', controlled by
new variables settable by `shopt'. Setting this variable currently
restores the bash-3.1 behavior when processing quoted strings on the rhs
of the `=~' operator to the `[[' command.
m. The `ulimit' builtin now has new -b (socket buffer size) and -T (number
of threads) options.
n. The -p option to `declare' now displays all variable values and attributes
(or function values and attributes if used with -f).
o. There is a new `compopt' builtin that allows completion functions to modify
completion options for existing completions or the completion currently
being executed.
p. The `read' builtin has a new -i option which inserts text into the reply
buffer when using readline.
q. A new `-E' option to the complete builtin allows control of the default
behavior for completion on an empty line.
r. There is now limited support for completing command name words containing
globbing characters.
s. Changed format of internal help documentation for all builtins to roughly
follow man page format.
t. The `help' builtin now has a new -d option, to display a short description,
and a -m option, to print help information in a man page-like format.
u. There is a new `mapfile' builtin to populate an array with lines from a
given file. The name `readarray' is a synonym.
v. If a command is not found, the shell attempts to execute a shell function
named `command_not_found_handle', supplying the command words as the
function arguments.
w. There is a new shell option: `globstar'. When enabled, the globbing code
treats `**' specially -- it matches all directories (and files within
them, when appropriate) recursively.
x. There is a new shell option: `dirspell'. When enabled, the filename
completion code performs spelling correction on directory names during
completion.
y. The `-t' option to the `read' builtin now supports fractional timeout
values.
z. Brace expansion now allows zero-padding of expanded numeric values and
will add the proper number of zeroes to make sure all values contain the
same number of digits.
aa. There is a new bash-specific bindable readline function: `dabbrev-expand'.
It uses menu completion on a set of words taken from the history list.
bb. The command assigned to a key sequence with `bind -x' now sets two new
variables in the environment of the executed command: READLINE_LINE_BUFFER
and READLINE_POINT. The command can change the current readline line
and cursor position by modifying READLINE_LINE_BUFFER and READLINE_POINT,
respectively.
cc. There is a new &>> redirection operator, which appends the standard output
and standard error to the named file.
dd. The parser now understands `|&' as a synonym for `2>&1 |', which redirects
the standard error for a command through a pipe.
ee. The new `;&' case statement action list terminator causes execution to
continue with the action associated with the next pattern in the
statement rather than terminating the command.
ff. The new `;;&' case statement action list terminator causes the shell to
test the next set of patterns after completing execution of the current
action, rather than terminating the command.
gg. The shell understands a new variable: PROMPT_DIRTRIM. When set to an
integer value greater than zero, prompt expansion of \w and \W will
retain only that number of trailing pathname components and replace
the intervening characters with `...'.
hh. There are new case-modifying word expansions: uppercase (^[^]) and
lowercase (,[,]). They can work on either the first character or
array element, or globally. They accept an optional shell pattern
that determines which characters to modify. There is an optionally-
configured feature to include capitalization operators.
ii. The shell provides associative array variables, with the appropriate
support to create, delete, assign values to, and expand them.
jj. The `declare' builtin now has new -l (convert value to lowercase upon
assignment) and -u (convert value to uppercase upon assignment) options.
There is an optionally-configurable -c option to capitalize a value at
assignment.
kk. There is a new `coproc' reserved word that specifies a coprocess: an
asynchronous command run with two pipes connected to the creating shell.
Coprocs can be named. The input and output file descriptors and the
PID of the coprocess are available to the calling shell in variables
with coproc-specific names.
ll. A value of 0 for the -t option to `read' now returns success if there is
input available to be read from the specified file descriptor.
mm. CDPATH and GLOBIGNORE are ignored when the shell is running in privileged
mode.
nn. New bindable readline functions shell-forward-word and shell-backward-word,
which move forward and backward words delimited by shell metacharacters
and honor shell quoting.
oo. New bindable readline functions shell-backward-kill-word and shell-kill-word
which kill words backward and forward, but use the same word boundaries
as shell-forward-word and shell-backward-word.
2. New Features in Readline
a. A new variable, rl_sort_completion_matches; allows applications to inhibit
match list sorting (but beware: some things don't work right if
applications do this).
b. A new variable, rl_completion_invoking_key; allows applications to discover
the key that invoked rl_complete or rl_menu_complete.
c. The functions rl_block_sigint and rl_release_sigint are now public and
available to calling applications who want to protect critical sections
(like redisplay).
d. The functions rl_save_state and rl_restore_state are now public and
available to calling applications; documented rest of readline's state
flag values.
e. A new user-settable variable, `history-size', allows setting the maximum
number of entries in the history list.
f. There is a new implementation of menu completion, with several improvements
over the old; the most notable improvement is a better `completions
browsing' mode.
g. The menu completion code now uses the rl_menu_completion_entry_function
variable, allowing applications to provide their own menu completion
generators.
h. There is support for replacing a prefix of a pathname with a `...' when
displaying possible completions. This is controllable by setting the
`completion-prefix-display-length' variable. Matches with a common prefix
longer than this value have the common prefix replaced with `...'.
i. There is a new `revert-all-at-newline' variable. If enabled, readline will
undo all outstanding changes to all history lines when `accept-line' is
executed.
j. If the kernel supports it, readline displays special characters
corresponding to a keyboard-generated signal when the signal is received.