mirror of
https://https.git.savannah.gnu.org/git/bash.git
synced 2026-08-06 02:02:42 +02:00
commit bash-20200520 snapshot
This commit is contained in:
@@ -1,3 +1,164 @@
|
||||
This is a terse description of the new features added to bash-5.1 since
|
||||
the release of bash-5.0. As always, the manual page (doc/bash.1) is
|
||||
the place to look for complete descriptions.
|
||||
|
||||
1. New Features in Bash
|
||||
|
||||
a. `bind -x' now supports different bindings for different editing modes and
|
||||
keymaps.
|
||||
|
||||
b. Bash attempts to optimize the number of times it forks when executing
|
||||
commands in subshells and from `bash -c'.
|
||||
|
||||
c. Here documents and here strings now use pipes for the expanded document if
|
||||
it's smaller than the pipe buffer size, reverting to temporary files if it's
|
||||
larger.
|
||||
|
||||
d. There are new loadable builtins: mktemp, accept, mkfifo, csv, cut/lcut
|
||||
|
||||
e. In posix mode, `trap -p' now displays signals whose disposition is SIG_DFL
|
||||
and those that were SIG_IGN when the shell starts.
|
||||
|
||||
f. The shell now expands the history number (e.g., in PS1) even if it is not
|
||||
currently saving commands to the history list.
|
||||
|
||||
g. `read -e' may now be used with arbitrary file descriptors (`read -u N').
|
||||
|
||||
h. The `select' builtin now runs traps if its internal call to the read builtin
|
||||
is interrupted by a signal.
|
||||
|
||||
i. SRANDOM: a new variable that expands to a 32-bit random number that is not
|
||||
produced by an LCRNG, and uses getrandom/getentropy, falling back to
|
||||
/dev/urandom or arc4random if available. There is a fallback generator if
|
||||
none of these are available.
|
||||
|
||||
j. shell-transpose-words: a new bindable readline command that uses the same
|
||||
definition of word as shell-forward-word, etc.
|
||||
|
||||
k. The shell now adds default bindings for shell-forward-word,
|
||||
shell-backward-word, shell-transpose-words, and shell-kill-word.
|
||||
|
||||
l. Bash now allows ARGV0 appearing in the initial shell environment to set $0.
|
||||
|
||||
m. If `unset' is executed without option arguments, bash tries to unset a shell
|
||||
function if a name argument cannot be a shell variable name because it's not
|
||||
an identifier.
|
||||
|
||||
n. The `test -N' operator uses nanosecond timestamp granularity if it's
|
||||
available.
|
||||
|
||||
o. Bash posix mode now treats assignment statements preceding shell function
|
||||
definitions the same as in its default mode, since POSIX has changed and
|
||||
no longer requires those assignments to persist after the function returns
|
||||
(POSIX interp 654).
|
||||
|
||||
p. BASH_REMATCH is no longer readonly.
|
||||
|
||||
q. wait: has a new -p VARNAME option, which stores the PID returned by `wait -n'
|
||||
or `wait' without arguments.
|
||||
|
||||
r. Sorting the results of pathname expansion now uses byte-by-byte comparisons
|
||||
if two strings collate equally to impose a total order; the result of a
|
||||
POSIX interpretation.
|
||||
|
||||
s. Bash now allows SIGINT trap handlers to execute recursively.
|
||||
|
||||
t. Bash now saves and restores state around setting and unsetting posix mode,
|
||||
instead of having unsetting posix mode set a known state.
|
||||
|
||||
u. Process substitution is now available in posix mode.
|
||||
|
||||
v. READLINE_MARK: a new variable available while executing commands bound with
|
||||
`bind -x', contains the value of the mark.
|
||||
|
||||
w. Bash removes SIGCHLD from the set of blocked signals if it's blocked at shell
|
||||
startup.
|
||||
|
||||
x. `test -v N' can now test whether or not positional parameter N is set.
|
||||
|
||||
y. `local' now honors the `-p' option to display all local variables at the
|
||||
current context.
|
||||
|
||||
z. The `@a' variable transformation now prints attributes for unset array
|
||||
variables.
|
||||
|
||||
aa. The `@A' variable transformation now prints a declare command that sets a
|
||||
variable's attributes if the variable has attributes but is unset.
|
||||
|
||||
bb. `declare' and `local' now have a -I option that inherits attributes and
|
||||
value from a variable with the same name at a previous scope.
|
||||
|
||||
cc. When run from a -c command, `jobs' now reports the status of completed jobs.
|
||||
|
||||
dd. New `U', `u', and `L' parameter transformations to convert to uppercase,
|
||||
convert first character to uppercase, and convert to lowercase,
|
||||
respectively.
|
||||
|
||||
ee. PROMPT_COMMANDS: a new array variable, each element of which can contain a
|
||||
command to be executed like PROMPT_COMMAND.
|
||||
|
||||
ff. `ulimit' has a -R option to report and set the RLIMIT_RTTIME resource.
|
||||
|
||||
gg. Associative arrays may be assigned using a list of key-value pairs within
|
||||
a compound assignment. Compound assignments where the words are not of
|
||||
the form [key]=value are assumed to be key-value assignments. A missing or
|
||||
empty key is an error; a missing value is treated as NULL. Assignments may
|
||||
not mix the two forms.
|
||||
|
||||
hh. New `K' parameter transformation to display associative arrays as key-
|
||||
value pairs.
|
||||
|
||||
ii. Writing history to syslog now handles messages longer than the syslog max
|
||||
length by writing multiple messages with a sequence number.
|
||||
|
||||
jj. SECONDS and RANDOM may now be assigned using arithmetic expressions, since
|
||||
they are nominally integer variables. LINENO is not an integer variable.
|
||||
|
||||
kk. Bash temporarily suppresses the verbose option when running the DEBUG trap
|
||||
while running a command from the `fc' builtin.
|
||||
|
||||
ll. `wait -n' now accepts a list of job specifications as arguments and will
|
||||
wait for the first one in the list to change state.
|
||||
|
||||
mm. The associative array implementation can now dynamically increase the
|
||||
size of the hash table based on insertion patterns.
|
||||
|
||||
nn. HISTFILE is now readonly in a restricted shell.
|
||||
|
||||
2. New Features in Readline
|
||||
|
||||
a. If a second consecutive completion attempt produces matches where the first
|
||||
did not, treat it as a new completion attempt and insert a match as
|
||||
appropriate.
|
||||
|
||||
b. Bracketed paste mode works in more places: incremental search strings, vi
|
||||
overstrike mode, character search, and reading numeric arguments.
|
||||
|
||||
c. Readline automatically switches to horizontal scrolling if the terminal has
|
||||
only one line.
|
||||
|
||||
d. Unbinding all key sequences bound to a particular readline function now
|
||||
descends into keymaps for multi-key sequences.
|
||||
|
||||
e. rl-clear-display: new bindable command that clears the screen and, if
|
||||
possible, the scrollback buffer (bound to emacs mode M-C-l by default).
|
||||
|
||||
f. New active mark and face feature: when enabled, it will highlight the text
|
||||
inserted by a bracketed paste (the `active region') and the text found by
|
||||
incremental and non-incremental history searches.
|
||||
|
||||
g. Readline sets the mark in several additional commands.
|
||||
|
||||
h. Bracketed paste mode is enabled by default (for now).
|
||||
|
||||
i. Readline tries to take advantage of the more regular structure of UTF-8
|
||||
characters to identify the beginning and end of characters when moving
|
||||
through the line buffer.
|
||||
|
||||
j. The bindable operate-and-get-next command (and its default bindings) are
|
||||
now part of readline instead of a bash-specific addition.
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
This is a terse description of the new features added to bash-5.0 since
|
||||
the release of bash-4.4. As always, the manual page (doc/bash.1) is
|
||||
the place to look for complete descriptions.
|
||||
|
||||
Reference in New Issue
Block a user