git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: bash 4.0 breaks some completion scripts

From
SZEDER Gábor <szeder@ira.uka.de>
Date
Dec 3, 2010, 00:11 UTC
Message-ID
<20101203001157.GC3577@neumann>
In-Reply-To
<20101202233848.GA8438@burratino>
Hi,
On Thu, Dec 02, 2010 at 05:38:48PM -0600, Jonathan Nieder wrote:
Show 29 quoted lines
> Jonathan Nieder wrote:
> 
> > Bash 4.0 changed the rules for completion word splitting so that
> > they are incompatible with 3.x.  I think some Breaks: will be needed
> > to ensure smooth upgrades.
> 
> Just FYI: Ah, at last some clarity!
> 
> From the bash 3 manual:
> 
>  COMP_WORDS
> 	An array variable (see Arrays below) consisting of the
> 	individual words in the current command line.  The
> 	words are split on shell metacharacters as the shell
> 	parser would separate them.  This variable is
> 	available only in shell functions invoked by the
> 	programmable completion facilities (see Programmable
> 	Completion below).
> 
> From the bash 4 manual:
> 
>  COMP_WORDS
> 	An array variable (see Arrays below) consisting of the
> 	individual words in the current command line.  The
> 	line is split into words as readline would split it,
> 	using COMP_WORDBREAKS as described above.  This
> 	variable is available only in shell functions invoked
> 	by the programmable completion facilities (see
> 	Programmable Completion below).

Oh dear, oh dear. I've just sent a reply to your message on the git list with basically the same findigs. [1]

> The workaround used by the bash-completion scripts is to paste words
> from COMP_WORDS together (in _get_comp_words_by_ref).
> 
> If only the NEWS file had mentioned it. :)  

Actually, the NEWS file does mention it (and Peter noted it right at the start! [2]):

i.  The programmable completion code now uses the same set of characters as
    readline when breaking the command line into a list of words.

But it's really easy to misinterpret this statement, because there is and there was a $COMP_WORDBREAKS, so the first thing that comes to mind is that the set of characters in $COMP_WORDBREAKS is changed, leaving you puzzled for weeks when you discover that the set of characters is still the same.

Best, Gábor

[1] http://marc.info/?l=git&m=129133327312420&w=2 [2] http://thread.gmane.org/gmane.comp.version-control.git/159516/focus=159628

Previous: Jonathan Nieder
Message 2 of 2 in “Re: bash 4.0 breaks some completion scripts”
  1. Jonathan NiederDec 2, 2010
  2. SZEDER GáborDec 3, 2010

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.