From 727b8d366390fea446f7a566c4be1be6c0e2a765 Mon Sep 17 00:00:00 2001 From: Chet Ramey Date: Fri, 6 Jun 2025 12:16:11 -0400 Subject: [PATCH] addition to POSIX mode documentation; new translations; update copyrights on some files; update formatted documentation; changes to cut/lcut loadable builtins when supplied -a ARRAY --- MANIFEST | 1 + POSIX | 19 +- doc/bash.info | 292 ++--- doc/bash.pdf | Bin 439102 -> 439102 bytes doc/bash.ps | 26 +- doc/bashref.dvi | Bin 894716 -> 895444 bytes doc/bashref.html | 279 +++-- doc/bashref.info | 292 ++--- doc/bashref.log | 32 +- doc/bashref.pdf | Bin 855036 -> 855783 bytes doc/bashref.ps | 658 +++++----- doc/builtins.pdf | Bin 143906 -> 143906 bytes examples/loadables/cut.c | 132 +- examples/loadables/ocut.c | 616 ++++++++++ execute_cmd.c | 4 + lib/readline/histexpand.c | 2 +- lib/readline/history.c | 2 +- lib/readline/isearch.c | 2 +- lib/readline/readline.c | 2 +- lib/readline/rlmbutil.h | 2 +- lib/readline/rltty.c | 2 +- lib/readline/rlwinsize.h | 2 +- lib/readline/search.c | 2 +- lib/readline/shell.c | 2 +- lib/readline/terminal.c | 2 +- lib/readline/util.c | 2 +- po/bg.gmo | Bin 249409 -> 258404 bytes po/bg.po | 1485 ++++++++--------------- po/cs.gmo | Bin 185732 -> 192115 bytes po/cs.po | 1170 ++++++------------ po/es.gmo | Bin 183772 -> 190295 bytes po/es.po | 821 ++++--------- po/fr.gmo | Bin 190318 -> 197028 bytes po/fr.po | 2425 ++++++++++++------------------------- po/hr.gmo | Bin 183924 -> 184243 bytes po/hr.po | 489 ++++---- po/it.gmo | Bin 189635 -> 190493 bytes po/it.po | 521 ++++---- po/ko.gmo | Bin 185524 -> 192128 bytes po/ko.po | 606 +++------ po/nl.gmo | Bin 181142 -> 187509 bytes po/nl.po | 1081 ++++++----------- po/pt.gmo | Bin 180179 -> 186579 bytes po/pt.po | 1191 ++++++------------ po/pt_BR.gmo | Bin 184288 -> 190756 bytes po/pt_BR.po | 1857 +++++++++------------------- po/ro.gmo | Bin 190432 -> 197068 bytes po/ro.po | 1528 ++++++++--------------- po/sv.gmo | Bin 177233 -> 183324 bytes po/sv.po | 769 ++++-------- po/uk.gmo | Bin 238452 -> 246838 bytes po/uk.po | 1002 +++++---------- po/zh_CN.gmo | Bin 170647 -> 176530 bytes po/zh_CN.po | 526 +++----- tests/nameref.right | 8 +- tests/nameref25.sub | 29 +- 56 files changed, 6746 insertions(+), 11135 deletions(-) create mode 100644 examples/loadables/ocut.c diff --git a/MANIFEST b/MANIFEST index 5a09c72e..985d1793 100644 --- a/MANIFEST +++ b/MANIFEST @@ -792,6 +792,7 @@ examples/loadables/csv.c f examples/loadables/dsv.c f examples/loadables/kv.c f examples/loadables/cut.c f +examples/loadables/ocut.c f examples/loadables/logname.c f examples/loadables/basename.c f examples/loadables/dirname.c f diff --git a/POSIX b/POSIX index 20130133..a34084cf 100644 --- a/POSIX +++ b/POSIX @@ -362,14 +362,23 @@ The following list is what's changed when POSIX mode is in effect: 75. Bash removes an exited background process's status from the list of such statuses after the ‘wait’ builtin returns it. -There is other POSIX behavior that Bash does not implement by default -even when in POSIX mode. Specifically: - - 1. The ‘fc’ builtin checks ‘$EDITOR’ as a program to edit history +There is additional POSIX behavior that Bash does not implement by +default even when in POSIX mode. Specifically: + + 1. POSIX requires that word splitting be byte-oriented. That is, each + _byte_ in the value of ‘IFS’ potentially splits a word, even if + that byte is part of a multibyte character in ‘IFS’ or part of + multibyte character in the word. Bash allows multibyte characters + in the value of ‘IFS’, treating a valid multibyte character as a + single delimiter, and will not split a valid multibyte character + even if one of the bytes composing that character appears in ‘IFS’. + This is POSIX interpretation 1560, further modified by issue 1924. + + 2. The ‘fc’ builtin checks ‘$EDITOR’ as a program to edit history entries if ‘FCEDIT’ is unset, rather than defaulting directly to ‘ed’. ‘fc’ uses ‘ed’ if ‘EDITOR’ is unset. - 2. As noted above, Bash requires the ‘xpg_echo’ option to be enabled + 3. As noted above, Bash requires the ‘xpg_echo’ option to be enabled for the ‘echo’ builtin to be fully conformant. Bash can be configured to be POSIX-conformant by default, by specifying diff --git a/doc/bash.info b/doc/bash.info index c95e7dc5..48df32fc 100644 --- a/doc/bash.info +++ b/doc/bash.info @@ -1,9 +1,9 @@ -This is bash.info, produced by makeinfo version 7.1 from bashref.texi. +This is bash.info, produced by makeinfo version 7.2 from bashref.texi. This text is a brief description of the features that are present in the -Bash shell (version 5.3, 7 April 2025). +Bash shell (version 5.3, 18 May 2025). - This is Edition 5.3, last updated 7 April 2025, of ‘The GNU Bash + This is Edition 5.3, last updated 18 May 2025, of ‘The GNU Bash Reference Manual’, for ‘Bash’, Version 5.3. Copyright © 1988-2025 Free Software Foundation, Inc. @@ -26,10 +26,10 @@ Bash Features ************* This text is a brief description of the features that are present in the -Bash shell (version 5.3, 7 April 2025). The Bash home page is +Bash shell (version 5.3, 18 May 2025). The Bash home page is . - This is Edition 5.3, last updated 7 April 2025, of ‘The GNU Bash + This is Edition 5.3, last updated 18 May 2025, of ‘The GNU Bash Reference Manual’, for ‘Bash’, Version 5.3. Bash contains features that appear in other popular shells, and some @@ -7990,14 +7990,23 @@ startup files. 75. Bash removes an exited background process's status from the list of such statuses after the ‘wait’ builtin returns it. - There is other POSIX behavior that Bash does not implement by default -even when in POSIX mode. Specifically: + There is additional POSIX behavior that Bash does not implement by +default even when in POSIX mode. Specifically: - 1. The ‘fc’ builtin checks ‘$EDITOR’ as a program to edit history + 1. POSIX requires that word splitting be byte-oriented. That is, each + _byte_ in the value of ‘IFS’ potentially splits a word, even if + that byte is part of a multibyte character in ‘IFS’ or part of + multibyte character in the word. Bash allows multibyte characters + in the value of ‘IFS’, treating a valid multibyte character as a + single delimiter, and will not split a valid multibyte character + even if one of the bytes composing that character appears in ‘IFS’. + This is POSIX interpretation 1560, further modified by issue 1924. + + 2. The ‘fc’ builtin checks ‘$EDITOR’ as a program to edit history entries if ‘FCEDIT’ is unset, rather than defaulting directly to ‘ed’. ‘fc’ uses ‘ed’ if ‘EDITOR’ is unset. - 2. As noted above, Bash requires the ‘xpg_echo’ option to be enabled + 3. As noted above, Bash requires the ‘xpg_echo’ option to be enabled for the ‘echo’ builtin to be fully conformant. Bash can be configured to be POSIX-conformant by default, by @@ -13600,141 +13609,140 @@ D.5 Concept Index * yanking text: Readline Killing Commands. (line 6) -  Tag Table: -Node: Top893 -Node: Introduction2826 -Node: What is Bash?3039 -Node: What is a shell?4172 -Node: Definitions6782 -Node: Basic Shell Features10109 -Node: Shell Syntax11333 -Node: Shell Operation12360 -Node: Quoting13651 -Node: Escape Character14989 -Node: Single Quotes15524 -Node: Double Quotes15873 -Node: ANSI-C Quoting17218 -Node: Locale Translation18612 -Node: Creating Internationalized Scripts20015 -Node: Comments24213 -Node: Shell Commands24980 -Node: Reserved Words25919 -Node: Simple Commands26784 -Node: Pipelines27446 -Node: Lists30702 -Node: Compound Commands32574 -Node: Looping Constructs33583 -Node: Conditional Constructs36132 -Node: Command Grouping51202 -Node: Coprocesses52694 -Node: GNU Parallel55380 -Node: Shell Functions56298 -Node: Shell Parameters64746 -Node: Positional Parameters69647 -Node: Special Parameters70737 -Node: Shell Expansions74198 -Node: Brace Expansion76387 -Node: Tilde Expansion79723 -Node: Shell Parameter Expansion82678 -Node: Command Substitution103321 -Node: Arithmetic Expansion106850 -Node: Process Substitution108026 -Node: Word Splitting109134 -Node: Filename Expansion111578 -Node: Pattern Matching114802 -Node: Quote Removal120525 -Node: Redirections120829 -Node: Executing Commands131092 -Node: Simple Command Expansion131759 -Node: Command Search and Execution133867 -Node: Command Execution Environment136311 -Node: Environment139759 -Node: Exit Status141662 -Node: Signals143720 -Node: Shell Scripts148649 -Node: Shell Builtin Commands151947 -Node: Bourne Shell Builtins154058 -Node: Bash Builtins180705 -Node: Modifying Shell Behavior217629 -Node: The Set Builtin217971 -Node: The Shopt Builtin229965 -Node: Special Builtins247017 -Node: Shell Variables248006 -Node: Bourne Shell Variables248440 -Node: Bash Variables250948 -Node: Bash Features290072 -Node: Invoking Bash291086 -Node: Bash Startup Files297670 -Node: Interactive Shells302912 -Node: What is an Interactive Shell?303320 -Node: Is this Shell Interactive?303982 -Node: Interactive Shell Behavior304806 -Node: Bash Conditional Expressions308567 -Node: Shell Arithmetic313984 -Node: Aliases317313 -Node: Arrays320447 -Node: The Directory Stack328035 -Node: Directory Stack Builtins328832 -Node: Controlling the Prompt333277 -Node: The Restricted Shell336162 -Node: Bash POSIX Mode339044 -Node: Shell Compatibility Mode357401 -Node: Job Control366408 -Node: Job Control Basics366865 -Node: Job Control Builtins373233 -Node: Job Control Variables379915 -Node: Command Line Editing381146 -Node: Introduction and Notation382849 -Node: Readline Interaction385201 -Node: Readline Bare Essentials386389 -Node: Readline Movement Commands388197 -Node: Readline Killing Commands389193 -Node: Readline Arguments391216 -Node: Searching392273 -Node: Readline Init File394516 -Node: Readline Init File Syntax395819 -Node: Conditional Init Constructs422644 -Node: Sample Init File427029 -Node: Bindable Readline Commands430149 -Node: Commands For Moving431687 -Node: Commands For History434151 -Node: Commands For Text439541 -Node: Commands For Killing443666 -Node: Numeric Arguments446454 -Node: Commands For Completion447606 -Node: Keyboard Macros453302 -Node: Miscellaneous Commands454003 -Node: Readline vi Mode460570 -Node: Programmable Completion461547 -Node: Programmable Completion Builtins470284 -Node: A Programmable Completion Example482021 -Node: Using History Interactively487366 -Node: Bash History Facilities488047 -Node: Bash History Builtins491782 -Node: History Interaction498253 -Node: Event Designators503203 -Node: Word Designators504781 -Node: Modifiers507173 -Node: Installing Bash509110 -Node: Basic Installation510226 -Node: Compilers and Options514102 -Node: Compiling For Multiple Architectures514852 -Node: Installation Names516605 -Node: Specifying the System Type518839 -Node: Sharing Defaults519585 -Node: Operation Controls520299 -Node: Optional Features521318 -Node: Reporting Bugs533698 -Node: Major Differences From The Bourne Shell535055 -Node: GNU Free Documentation License556481 -Node: Indexes581658 -Node: Builtin Index582109 -Node: Reserved Word Index589207 -Node: Variable Index591652 -Node: Function Index609065 -Node: Concept Index623060 +Node: Top891 +Node: Introduction2822 +Node: What is Bash?3035 +Node: What is a shell?4168 +Node: Definitions6778 +Node: Basic Shell Features10105 +Node: Shell Syntax11329 +Node: Shell Operation12356 +Node: Quoting13647 +Node: Escape Character14985 +Node: Single Quotes15520 +Node: Double Quotes15869 +Node: ANSI-C Quoting17214 +Node: Locale Translation18608 +Node: Creating Internationalized Scripts20011 +Node: Comments24209 +Node: Shell Commands24976 +Node: Reserved Words25915 +Node: Simple Commands26780 +Node: Pipelines27442 +Node: Lists30698 +Node: Compound Commands32570 +Node: Looping Constructs33579 +Node: Conditional Constructs36128 +Node: Command Grouping51198 +Node: Coprocesses52690 +Node: GNU Parallel55376 +Node: Shell Functions56294 +Node: Shell Parameters64742 +Node: Positional Parameters69643 +Node: Special Parameters70733 +Node: Shell Expansions74194 +Node: Brace Expansion76383 +Node: Tilde Expansion79719 +Node: Shell Parameter Expansion82674 +Node: Command Substitution103317 +Node: Arithmetic Expansion106846 +Node: Process Substitution108022 +Node: Word Splitting109130 +Node: Filename Expansion111574 +Node: Pattern Matching114798 +Node: Quote Removal120521 +Node: Redirections120825 +Node: Executing Commands131088 +Node: Simple Command Expansion131755 +Node: Command Search and Execution133863 +Node: Command Execution Environment136307 +Node: Environment139755 +Node: Exit Status141658 +Node: Signals143716 +Node: Shell Scripts148645 +Node: Shell Builtin Commands151943 +Node: Bourne Shell Builtins154054 +Node: Bash Builtins180701 +Node: Modifying Shell Behavior217625 +Node: The Set Builtin217967 +Node: The Shopt Builtin229961 +Node: Special Builtins247013 +Node: Shell Variables248002 +Node: Bourne Shell Variables248436 +Node: Bash Variables250944 +Node: Bash Features290068 +Node: Invoking Bash291082 +Node: Bash Startup Files297666 +Node: Interactive Shells302908 +Node: What is an Interactive Shell?303316 +Node: Is this Shell Interactive?303978 +Node: Interactive Shell Behavior304802 +Node: Bash Conditional Expressions308563 +Node: Shell Arithmetic313980 +Node: Aliases317309 +Node: Arrays320443 +Node: The Directory Stack328031 +Node: Directory Stack Builtins328828 +Node: Controlling the Prompt333273 +Node: The Restricted Shell336158 +Node: Bash POSIX Mode339040 +Node: Shell Compatibility Mode357986 +Node: Job Control366993 +Node: Job Control Basics367450 +Node: Job Control Builtins373818 +Node: Job Control Variables380500 +Node: Command Line Editing381731 +Node: Introduction and Notation383434 +Node: Readline Interaction385786 +Node: Readline Bare Essentials386974 +Node: Readline Movement Commands388782 +Node: Readline Killing Commands389778 +Node: Readline Arguments391801 +Node: Searching392858 +Node: Readline Init File395101 +Node: Readline Init File Syntax396404 +Node: Conditional Init Constructs423229 +Node: Sample Init File427614 +Node: Bindable Readline Commands430734 +Node: Commands For Moving432272 +Node: Commands For History434736 +Node: Commands For Text440126 +Node: Commands For Killing444251 +Node: Numeric Arguments447039 +Node: Commands For Completion448191 +Node: Keyboard Macros453887 +Node: Miscellaneous Commands454588 +Node: Readline vi Mode461155 +Node: Programmable Completion462132 +Node: Programmable Completion Builtins470869 +Node: A Programmable Completion Example482606 +Node: Using History Interactively487951 +Node: Bash History Facilities488632 +Node: Bash History Builtins492367 +Node: History Interaction498838 +Node: Event Designators503788 +Node: Word Designators505366 +Node: Modifiers507758 +Node: Installing Bash509695 +Node: Basic Installation510811 +Node: Compilers and Options514687 +Node: Compiling For Multiple Architectures515437 +Node: Installation Names517190 +Node: Specifying the System Type519424 +Node: Sharing Defaults520170 +Node: Operation Controls520884 +Node: Optional Features521903 +Node: Reporting Bugs534283 +Node: Major Differences From The Bourne Shell535640 +Node: GNU Free Documentation License557066 +Node: Indexes582243 +Node: Builtin Index582694 +Node: Reserved Word Index589792 +Node: Variable Index592237 +Node: Function Index609650 +Node: Concept Index623645  End Tag Table diff --git a/doc/bash.pdf b/doc/bash.pdf index d9c80d93804705df9abcdcaf3762df565542fa5f..215fb4a8aa3a1b3163f0600ccaeece7602a3121b 100644 GIT binary patch delta 4945 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 PFgP_bG&Z*{>;(_UhQgqw delta 4918 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 diff --git a/doc/bash.ps b/doc/bash.ps index bc281c88..4f5e8e5d 100644 --- a/doc/bash.ps +++ b/doc/bash.ps @@ -1,6 +1,6 @@ %!PS-Adobe-3.0 %%Creator: groff version 1.23.0 -%%CreationDate: Tue Apr 22 10:00:28 2025 +%%CreationDate: Fri May 30 08:52:48 2025 %%DocumentNeededResources: font Times-Italic %%+ font Times-Roman %%+ font Times-Bold @@ -1469,18 +1469,18 @@ F1 .523(are each e)3.023 F -.25(va)-.25 G .523(luated as arith-).25 F F .55(alue is usu-)-.25 F .595(ally an inte)108 424.8 R .595 (ger constant, b)-.15 F .595(ut may be an e)-.2 F 3.096(xpression. When) -.15 F .596(\231+=\232 is applied to an array v)3.096 F .596 -(ariable using com-)-.25 F .262(pound assignment \(see)108 436.8 R F2 -(Arrays)2.761 E F1(belo)2.761 E .261(w\), the v)-.25 F(ariable')-.25 E -2.761(sv)-.55 G .261(alue is not unset \(as it is when using and ne) --3.011 F 2.761(wv)-.25 G(alues)-3.011 E .437 -(are appended to the array be)108 448.8 R .438 -(ginning at one greater than the array')-.15 F 2.938(sm)-.55 G .438 -(aximum inde)-2.938 F 2.938(x\()-.15 G .438(for inde)-2.938 F -.15(xe) --.15 G 2.938(da).15 G .438(rrays\) or)-2.938 F .123 -(added as additional k)108 460.8 R -.15(ey)-.1 G.15 E .123 -(alue pairs in an associati)-.25 F .423 -.15(ve a)-.25 H(rray).15 E -5.123(.W)-.65 G .122(hen applied to a string-v)-5.123 F .122(alued v) --.25 F(ariable,)-.25 E F0(value)2.622 E F1(is e)108 472.8 Q +(ariable using com-)-.25 F .537(pound assignment \(see)108 436.8 R F2 +(Arrays)3.036 E F1(belo)3.036 E .536(w\), the v)-.25 F(ariable')-.25 E +3.036(sv)-.55 G .536 +(alue is not unset \(as it is when using \231=\232\), and ne)-3.286 F(w) +-.25 E -.25(va)108 448.8 S .431(lues are appended to the array be).25 F +.431(ginning at one greater than the array')-.15 F 2.931(sm)-.55 G .431 +(aximum inde)-2.931 F 2.932(x\()-.15 G .432(for inde)-2.932 F -.15(xe) +-.15 G 2.932(da).15 G -.2(r-)-2.932 G .532 +(rays\) or added as additional k)108 460.8 R -.15(ey)-.1 G.15 E +.532(alue pairs in an associati)-.25 F .832 -.15(ve a)-.25 H(rray).15 E +5.532(.W)-.65 G .532(hen applied to a string-v)-5.532 F .531(alued v) +-.25 F(ari-)-.25 E(able,)108 472.8 Q F0(value)2.5 E F1(is e)2.5 E (xpanded and appended to the v)-.15 E(ariable')-.25 E 2.5(sv)-.55 G (alue.)-2.75 E 3.382(Av)108 489.6 S .882(ariable can be assigned the) -3.632 F F0(namer)3.382 E(ef)-.37 E F1(attrib)3.382 E .882 diff --git a/doc/bashref.dvi b/doc/bashref.dvi index bc0a1fba7f6e17ae3d06678bf35b727e1098dc71..b810243e9407f36d7a370c4c518d412f42bc6806 100644 GIT binary patch delta 4417 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 delta 3730 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 - +