📄 changelog
字号:
PST_ASSIGNOK is set 9/13 ----variables.c - make BASH_ARGC, BASH_ARGV, BASH_LINENO, and BASH_SOURCE non-unsettable, since the shell uses those values internallyexpr.c - make exponentiation right-associative, as is apparently correct 9/16 ----arrayfunc.c - make sure convert_var_to_array marks the environment as needing recreation if the converted variable was exported 9/17 ----braces.c - mark ${ as introducing an additional level of braces only if it's not in a quoted string -- quoted strings are handled before brace matching is doneparse.y - fixed an obscure problem in history_delimiting_chars where the `in' in a case statement could have a semicolon added after it, if the `case word' was on a previous linesupport/config.guess - support for newest versions of tandem non-stop kernellib/readline/display.c - in compute_lcd_of_matches, explicitly cast `text' to `char *' before passing it to rl_filename_dequoting_functionlib/readline/terminal.c - bind the key sequence sent by the keypad `delete' key to delete-char (same as ^D in emacs mode)builtins/ulimit.def - in print_all_limits, don't print anything if get_limit returns -1/EINVAL, indicating that the kernel doesn't support that particular limit - add -i (max number of pending signals), -q (max size of posix msg queues), -x (max number of file locks) for systems (Linux) that support themdoc/{bash.1,bashref.texi} - fix description of correspondence between FUNCNAME, BASH_LINENO, and BASH_SOURCE indices in description of BASH_LINENO 9/18 ----lib/sh/shquote.c - don't quote CTLESC and CTLNUL with CTLESC in sh_backslash_quote, as long as the resultant string never gets sent to the word expansion functions without going through the shell parserexterns.h - add extern declarations for strnlen and strpbkrk from lib/shsubst.[ch] - changes to handle case where IFS consists of multibyte characters. Changed: string_extract_verbatim, split_at_delims, string_list_dollar_star, string_list_dollar_at, list_string, get_word_from_string, setifs 9/19 ----mailcheck.c - change file_mod_date_changed to reset the cached mail file data if the file size drops to zerolib/readline/complete.c - change append_to_match so that a non-zero value for rl_completion_suppress_append will cause no `/' to be appended to a directory namebashline.c - experimental change to suppress appending a slash for a completed filename that is found in PATH as well as a directory in the current directory under certain circumstances: a single instance found in $PATH when `.' is not in $PATH, and multiple instances found in the $PATH, even when `.' is in the $PATH 9/24 ----command.h - new word flag: W_ASSIGNRHS, means word is rhs of assignment statement - new word flag: W_NOTILDE, means word is not to be tilde expanded - new word flag (internal): W_ITILDE, means the next character is a tilde that should be expandedgeneral.c - new set of tilde suffixes for use when parsing the RHS of an assignment statement and =~ should not be subject to tilde expansion - if ASSIGN_P argument to bash_tilde_expand is 2, use tilde prefixes for parsing RHS of assignment statementgeneral.[ch] - new function bash_tilde_find_word, drop-in replacement for tilde_find_wordsubst.c - call bash_tilde_expand with secord argument of 2 when expanding rhs of an assignment statement, so tildes after second and subsequent `=' in an assignment are not expanded - new function, expand_string_assignment, to expand the rhs of an assignment statement - add `~' to EXP_CHAR, the characters that will cause the word expansion functions to be called - move tilde expansion into expand_word_internal instead of many different calls to bash_tilde_expand scattered across different functions. NOTE: This means that double quotes surrounding a {paramOPword} expansion will cause tilde expansion to NOT be performed on `word'. I think this is right, what POSIX specifies, and consistent with the behavior of other characters in the rhsexecute_cmd.c - take out calls to bash_tilde_expand before calling word expansion functions 9/26 ----execute_cmd.c - make sure to call UNBLOCK_CHILD before returning on a pipe creation failure in execute_pipeline 9/27 ----variables.c - change get_bash_command to deal with the_printed_command_except_trap being NULLexecute_cmd.c - fix execute_simple_command to deal with the_printed_command being NULL when assigning to the_printed_command_except_trap -- fixes seg fault in savestring()parse.y - change the parser so that the closing `)' in a compound variable assignment delimits a token -- ksh93 does it this waydoc/{bash.1,bashref.texi} - change description of tilde expansion to note that expansion is attempted only after the first =~ in an assignment statementbuiltins/declare.def - when assigning to an array variable with declare -a x=(...), make sure the last character in the rhs of the variable assignment is `)', not just that it appears somewhere 9/28 ----command.h - add a `W_NOEXPAND' flag to inhibit all expansion except quote removal - add a `W_COMPASSIGN' flag to denote a word is a compound assignment statementparse.y - set W_COMPASSIGN on words that appear to be compound assignmentssubst.c - pass W_NOXPAND and W_COMPASSIGN through end of expand_word_internalsubst.[ch] - new function, expand_assignment_string_to_string, calls expand_string_assignment and then string_list on the resultvariables.c - assign_in_env now calls expand_assignment_string_to_string 9/30 ----builtins/common.c - change get_job_spec so the null job `%' once again means the current job 10/1 ----subst.c - do_assignment_internal now takes a WORD_DESC * as its first argument, and uses its `word' member as the assignment string - change expand_word_list_internal to call do_word_assignment instead of do_assignment, passing it `word' instead of, e.g., `word->word' - change extract_array_assignment_list to just return the passed string minus a trailing `)' if the last character is a right paren - change do_assignment_internal to call extract_array_assignment_listsubst.[ch] - change do_assignment and do_assignment_no_expand to take a `char *' instead of `const char *' first argument; change extern prototypes - new function, do_word_assignment, takes a WORD_DESC * and calls do_assignment_internal on it; add extern declaration with prototypegeneral.h - new typedef, sh_wassign_func_t, like sh_assign_func_t but takes a WORD_DESC * as its first argumentvariables.[ch] - assign_in_env now takes a WORD_DESC * as its first argument 10/2 ----command.h - new word flag, W_ASSNBLTIN, denotes that the word is a builtin command (in a command position) that takes assignment statements as arguments, like `declare' - new word flags, W_ASSIGNARG, denotes that word is an assignment statement given as argument to assignment builtinexecute_cmd.c - set W_ASSNBLTIN flag in fix_assignment_words if necessary (if there are any arguments that are assignment statements) - set W_ASSIGNARG flag in fix_assignment_words if necessarysubst.c - new function, do_compound_assignment, encapsulates the necessary code to perform a compound array assignment (including creation of local variables); called from do_assignment_internal - to fix the double-expansion problem with compound array assignments that are arguments to builtins like `declare', changed shell_expand_word_list to treat those arguments like assignment statements (with proper creation of local variables inside shell functions) and pass the attribute-setting portion of the statement onto the builtin. This is what ksh93 appears to do, from inspection of the `ksh93 -x' outputexecute_cmd.c - fix execute_simple_command: in case of pipeline or async command, when forking early, set `subshell_environment' so that it can contain both SUBSHELL_PIPE and SUBSHELL_ASYNC -- the two should not be mutually exclusive. Fixes bug reported by pierre.humblet@ieee.org - remove references to last_pid, old_command_subst_pid; use NO_PID as a sentinel value to decide whether or not a child process has been created and needs to be waited for. Submitted by pierre.humblet@ieee.org to fix recycling-pid problem on cygwindoc/{bash.1,bashref.texi} - fixed documentation of `@(pattern)' extended globbing operator -- it succeeds if the string matches one of the patterns, not exactly one. This is what ksh93 does, toolib/readline/complete.c - fixed rl_menu_complete so that a negative argument cycles backwards through the list 10/3 ----subst.c - use W_COMPASSIGN flag in do_assignment_internal instead of deciding lexically which assignments are compound array assignments 10/6 ----support/shobj-conf - additions for System V.5 from Boyd Gerber <gerberb@zenez.com>subst.c - in command_substitute, if subshell_environment includes SUBSHELL_ASYNC, call make_child with the `async_p' argument set to non-zero. This keeps command substitutions for async commands or pipelines from trying to give the terminal back to the shell's pgrp. make sure to save and restore last_asynchronous_pid. Fix suggested by <pierre.humblet@ieee.org> 10/7 ----config.h.in - add a placeholder definition for WCONTINUED_BROKEN 10/9 ----aclocal.m4 - add BASH_CHECK_WCONTINUED, checks for glibc bug where WCONTINUED is defined but rejected as invalid by waitpid(2)configure.in - add call to BASH_CHECK_WCONTINUED, defines WCONTINUED_BROKENredir.c - experimental change to add_undo_redirect to save manipulations to file descriptors >= SHELL_FD_BASE (10) on the list of redirections to be undone even if `exec' causes the list to be discardeddoc/{bash.1,bashref.texi} - note that redirections using file descriptors > 9 should be used carefully, because they might conflict with file descriptors the shell uses internally 10/11 -----parse.y - fix pipeline_command production to handle case where `pipeline' as `argument' of `!' or `time' is null (e.g., a syntax error not handled by the grammar) 10/13 -----lib/readline/readline.c - new internal variable, _rl_bind_stty_chars; if non-zero, bind the terminal special characters to readline equivalents at startup - change readline_default_bindings() and reset_default_bindings() to understand _rl_bind_stty_charslib/readline/rlprivate.h - new extern declaration for _rl_bind_stty_charslib/readline/rltty.c - change rl_prep_terminal to add support for _rl_bind_stty_chars 10/15 -----lib/readline/bind.c - new bindable variable, `bind-tty-special-chars', bound to value of _rl_bind_stty_charsdoc/bash.1,lib/readline/doc/{readline.3,rluser.texi} - documented new readline variable `bind-tty-special-chars'builtins/pushd.def - make the first check for option `--' skip the rest of option checking 10/16 -----lib/readline/shell.c - change sh_set_lines_and_columns to prefer setenv, which has predictable memory allocation behavior, to putenv, which does not 10/19 -----variables.c - change push_exported_var so that a tempenv variable has to have the export attribute set (which they all do -- something to look at) and the `propagate' attribute set to be propagated down to the next scopeexecute_cmd.c - change execute_builtin so that if CMD_COMMAND_BUILTIN is set in the passed flags argument, call pop_scope with a value that says the builtin is not special, since `command' means that preceding variable assignments don't persist in the environment. Fixes problem with variable assignments preceding command preceding special builtin keeping those variable assignments around (when in posix mode) 10/20 -----lib/sh/shquote.c - new function, sh_mkdoublequoted, brackets a given string with double quotes and returns a new string. Flags argument, if non- zero, means to quote embedded double quotes with backslashesexterns.h - new extern declaration for sh_mkdoublequotedparse.y - use sh_mkdoublequoted after calling localeexpand()lib/sh/strtrans.c - change ansicstr to understand that (flags & 4) != 0 means to remove backslash from unrecognized escape sequencesgeneral.c - fix logic problem in assignment() that caused non-variable-starter characters to be allowed, resulting in things like `1=xxx' creating a variable `1' in the hash table 10/21 -----bashline.c - don't call programmable_completions with an assignment statement argument 10/22 -----lib/readline/rltty.c - in prepare_terminal_settings, turn echoing on (readline_echoing_p) if get_tty_settings fails because the input is not a terminal 10/24 -----lib/readline/util.c - include rlmbutil.h for multibyte definitions
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -