📄 changes
字号:
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.4. New Features in Readlinea. 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.------------------------------------------------------------------------------This document details the changes between this version, bash-4.1-rc,and the previous version, bash-4.1-beta.1. Changes to Basha. 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 Readlinea. 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 Basha. 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 Readline3. New Features in Basha. 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 Basha. 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 Readlinea. 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.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -