On 3/27/14, 4:57 PM, Uwe Storbeck wrote: > $ ls a(<TAB> > > results in a wrong completion: > > $ ls a(a
This is something different. I addressed it in my first reply in this thread: "For instance, I believe that the problem with these unquoted special characters is that they break words for readline, and readline passes an empty argument to the completion function as the word to be completed." The `(' is a character that breaks words for readline. Readline passes an empty string to the bash completion function, which completes it to the longest common prefix of the possible completions. There is a difference between bash-4.2 and bash-4.3 in how it treats this word. bash-4.3 does not interpret it the `(' as a command delimiter (as it did in bash-4.2) because it's preceded by a character that is not a command delimiter. bash-4.2 incorrectly treated that construct as valid and attempted to perform command completion; since it's a syntax error, bash-4.3 doesn't. There aren't any valid completions for the empty string, so bash doesn't do anything and readline attempts its default filename completion. The longest common prefix of the possible filename completions is "a", which readline inserts into the line buffer. Since that line, as you entered it above, is a syntax error, it's not clear what bash should do with it (probably nothing). What do you expect to happen? Chet -- ``The lyf so short, the craft so long to lerne.'' - Chaucer ``Ars longa, vita brevis'' - Hippocrates Chet Ramey, ITS, CWRU c...@case.edu http://cnswww.cns.cwru.edu/~chet/