X-Git-Url: http://git.ipfire.org/?a=blobdiff_plain;f=NEWS;h=0cc3c45eb0713cfb573cdc353fd53c0528c0355c;hb=b7ec1810367e42788ded6c2fb99db698bd26ccf1;hp=a8e051297cab1ba226dcd0e9e0e4a802a3563b42;hpb=b80f6443b6b7b620c7272664c66ecb0b120a0998;p=thirdparty%2Fbash.git diff --git a/NEWS b/NEWS index a8e051297..0cc3c45eb 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,721 @@ +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} operators to the [[ conditional command now do string + comparison according to the current locale if the compatibility level + is greater than 40. + +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. + +v. The mapfile/readarray builtin no longer stores the commands it invokes via + callbacks in the history list. + +w. There is a new `compat40' shopt option. + +2. 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. + +------------------------------------------------------------------------------- +This is a terse description of the new features added to bash-4.0 since +the release of bash-3.2. As always, the manual page (doc/bash.1) is +the place to look for complete descriptions. + +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. + +------------------------------------------------------------------------------- +This is a terse description of the new features added to bash-3.2 since +the release of bash-3.1. As always, the manual page (doc/bash.1) is +the place to look for complete descriptions. + +1. New Features in Bash + +a. Changed the parameter pattern replacement functions to not anchor the + pattern at the beginning of the string if doing global replacement - that + combination doesn't make any sense. + +b. When running in `word expansion only' mode (--wordexp option), inhibit + process substitution. + +c. Loadable builtins now work on MacOS X 10.[34]. + +d. Shells running in posix mode no longer set $HOME, as POSIX requires. + +e. The code that checks for binary files being executed as shell scripts now + checks only for NUL rather than any non-printing character. + +f. Quoting the string argument to the [[ command's =~ operator now forces + string matching, as with the other pattern-matching operators. + +2. New Features in Readline + +a. Calling applications can now set the keyboard timeout to 0, allowing + poll-like behavior. + +b. The value of SYS_INPUTRC (configurable at compilation time) is now used as + the default last-ditch startup file. + +c. The history file reading functions now allow windows-like \r\n line + terminators. + +------------------------------------------------------------------------------- +This is a terse description of the new features added to bash-3.1 since +the release of bash-3.0. As always, the manual page (doc/bash.1) is +the place to look for complete descriptions. + +1. New Features in Bash + +a. Bash now understands LC_TIME as a special variable so that time display + tracks the current locale. + +b. BASH_ARGC, BASH_ARGV, BASH_SOURCE, and BASH_LINENO are no longer created + as `invisible' variables and may not be unset. + +c. In POSIX mode, if `xpg_echo' option is enabled, the `echo' builtin doesn't + try to interpret any options at all, as POSIX requires. + +d. The `bg' builtin now accepts multiple arguments, as POSIX seems to specify. + +e. Fixed vi-mode word completion and glob expansion to perform tilde + expansion. + +f. The `**' mathematic exponentiation operator is now right-associative. + +g. The `ulimit' builtin has new options: -i (max number of pending signals), + -q (max size of POSIX message queues), and -x (max number of file locks). + +h. A bare `%' once again expands to the current job when used as a job + specifier. + +i. The `+=' assignment operator (append to the value of a string or array) is + now supported for assignment statements and arguments to builtin commands + that accept assignment statements. + +j. BASH_COMMAND now preserves its value when a DEBUG trap is executed. + +k. The `gnu_errfmt' option is enabled automatically if the shell is running + in an emacs terminal window. + +l. New configuration option: --single-help-strings. Causes long help text + to be written as a single string; intended to ease translation. + +m. The COMP_WORDBREAKS variable now causes the list of word break characters + to be emptied when the variable is unset. + +n. An unquoted expansion of $* when $IFS is empty now causes the positional + parameters to be concatenated if the expansion doesn't undergo word + splitting. + +o. Bash now inherits $_ from the environment if it appears there at startup. + +p. New shell option: nocasematch. If non-zero, shell pattern matching ignores + case when used by `case' and `[[' commands. + +q. The `printf' builtin takes a new option: -v var. That causes the output + to be placed into var instead of on stdout. + +r. By default, the shell no longer reports processes dying from SIGPIPE. + +s. Bash now sets the extern variable `environ' to the export environment it + creates, so C library functions that call getenv() (and can't use the + shell-provided replacement) get current values of environment variables. + +t. A new configuration option, `--enable-strict-posix-default', which will + build bash to be POSIX conforming by default. + +u. If compiled for strict POSIX conformance, LINES and COLUMNS may now + override the true terminal size. + +2. New Features in Readline + +a. The key sequence sent by the keypad `delete' key is now automatically + bound to delete-char. + +b. A negative argument to menu-complete now cycles backward through the + completion list. + +c. A new bindable readline variable: bind-tty-special-chars. If non-zero, + readline will bind the terminal special characters to their readline + equivalents when it's called (on by default). + +d. New bindable command: vi-rubout. Saves deleted text for possible + reinsertion, as with any vi-mode `text modification' command; `X' is bound + to this in vi command mode. + +e. A new external application-controllable variable that allows the LINES + and COLUMNS environment variables to set the window size regardless of + what the kernel returns: rl_prefer_env_winsize + +------------------------------------------------------------------------------- This is a terse description of the new features added to bash-3.0 since the release of bash-2.05b. As always, the manual page (doc/bash.1) is the place to look for complete descriptions. @@ -1089,3 +1807,9 @@ e. There are new library functions and variables available to application f. The NEWLINE character (^J) is now treated as a search terminator by the incremental search functions. +------------------------------------------------------------------------------- + +Copying and distribution of this file, with or without modification, +are permitted in any medium without royalty provided the copyright +notice and this notice are preserved. This file is offered as-is, +without any warranty.