Re: /dev/fd/62: No such file or directory

2014-03-31 Thread Greg Wooledge
On Fri, Mar 28, 2014 at 06:14:27PM -0700, Linda Walsh wrote:
> Does read varname <<<$(...) use process substitution?

I wouldn't dare write it like that, because who knows how the parser
will treat it.  I'd write it this way:

read varname <<< "$(...)"

This is a command substitution and a here-string.  Here-strings are
implemented with a temporary file, I believe.

> I'd think not.. but just to be safe... it's only the things
> with '<(' in them?

Process substitutions are <(...) and >(...).  These are the ones that
use either a named pipe, or a /dev/fd/* node.



Bash-4.3 Official Patch 1

2014-03-31 Thread Chet Ramey
 BASH PATCH REPORT
 =

Bash-Release:   4.3
Patch-ID:   bash43-001

Bug-Reported-by:NBaH 
Bug-Reference-ID:   
Bug-Reference-URL:  
http://lists.gnu.org/archive/html/bug-bash/2014-02/msg00092.html

Bug-Description:

A missing check for a valid option prevented `test -R' from working.  There
is another problem that causes bash to look up the wrong variable name when
processing the argument to `test -R'.

Patch (apply with `patch -p0'):

*** ../bash-4.3/test.c  2014-02-04 16:52:58.0 -0500
--- test.c  2014-02-28 21:22:44.0 -0500
***
*** 647,652 
  
  case 'R':
!   v = find_variable (arg);
!   return (v && invisible_p (v) == 0 && var_isset (v) && nameref_p (v) ? 
TRUE : FALSE);
  }
  
--- 647,652 
  
  case 'R':
!   v = find_variable_noref (arg);
!   return ((v && invisible_p (v) == 0 && var_isset (v) && nameref_p (v)) ? 
TRUE : FALSE);
  }
  
***
*** 724,727 
--- 724,728 
  case 'u': case 'v': case 'w': case 'x': case 'z':
  case 'G': case 'L': case 'O': case 'S': case 'N':
+ case 'R':
return (1);
  }
*** ../bash-4.3/patchlevel.h2012-12-29 10:47:57.0 -0500
--- patchlevel.h2014-03-20 20:01:28.0 -0400
***
*** 26,30 
 looks for to find the patch level (for the sccs version string). */
  
! #define PATCHLEVEL 0
  
  #endif /* _PATCHLEVEL_H_ */
--- 26,30 
 looks for to find the patch level (for the sccs version string). */
  
! #define PATCHLEVEL 1
  
  #endif /* _PATCHLEVEL_H_ */

-- 
``The lyf so short, the craft so long to lerne.'' - Chaucer
 ``Ars longa, vita brevis'' - Hippocrates
Chet Ramey, ITS, CWRUc...@case.eduhttp://cnswww.cns.cwru.edu/~chet/



Bash-4.3 Official Patch 2

2014-03-31 Thread Chet Ramey
 BASH PATCH REPORT
 =

Bash-Release:   4.3
Patch-ID:   bash43-002

Bug-Reported-by:Moe Tunes 
Bug-Reference-ID:   <53103f49.3070...@gmail.com>
Bug-Reference-URL:  
http://lists.gnu.org/archive/html/bug-bash/2014-02/msg00086.html

Bug-Description:

A change to save state while running the DEBUG trap caused pipelines to hang
on systems which need process group synchronization while building pipelines.

Patch (apply with `patch -p0'):

*** ../bash-4.3/trap.c  2014-02-05 10:03:21.0 -0500
--- trap.c  2014-02-28 09:51:43.0 -0500
***
*** 921,925 
  
  #if defined (JOB_CONTROL)
!   save_pipeline (1);  /* XXX only provides one save level */
  #endif
  
--- 921,926 
  
  #if defined (JOB_CONTROL)
!   if (sig != DEBUG_TRAP)  /* run_debug_trap does this */
!   save_pipeline (1);  /* XXX only provides one save level */
  #endif
  
***
*** 941,945 
  
  #if defined (JOB_CONTROL)
!   restore_pipeline (1);
  #endif
  
--- 942,947 
  
  #if defined (JOB_CONTROL)
!   if (sig != DEBUG_TRAP)  /* run_debug_trap does this */
!   restore_pipeline (1);
  #endif
  
*** ../bash-4.3/patchlevel.h2012-12-29 10:47:57.0 -0500
--- patchlevel.h2014-03-20 20:01:28.0 -0400
***
*** 26,30 
 looks for to find the patch level (for the sccs version string). */
  
! #define PATCHLEVEL 1
  
  #endif /* _PATCHLEVEL_H_ */
--- 26,30 
 looks for to find the patch level (for the sccs version string). */
  
! #define PATCHLEVEL 2
  
  #endif /* _PATCHLEVEL_H_ */

-- 
``The lyf so short, the craft so long to lerne.'' - Chaucer
 ``Ars longa, vita brevis'' - Hippocrates
Chet Ramey, ITS, CWRUc...@case.eduhttp://cnswww.cns.cwru.edu/~chet/



Bash-4.3 Official Patch 3

2014-03-31 Thread Chet Ramey
 BASH PATCH REPORT
 =

Bash-Release:   4.3
Patch-ID:   bash43-003

Bug-Reported-by:Anatol Pomozov 
Bug-Reference-ID:   

Bug-Reference-URL:  
http://lists.gnu.org/archive/html/bug-readline/2014-03/msg00010.html

Bug-Description:

When in callback mode, some readline commands can cause readline to seg
fault by passing invalid contexts to callback functions.

Patch (apply with `patch -p0'):

*** ../bash-4.3/lib/readline/readline.c 2013-10-28 14:58:06.0 -0400
--- lib/readline/readline.c 2014-03-10 14:15:02.0 -0400
***
*** 745,749 
  
RL_CHECK_SIGNALS ();
!   if (r == 0) /* success! */
  {
_rl_keyseq_chain_dispose ();
--- 745,750 
  
RL_CHECK_SIGNALS ();
!   /* We only treat values < 0 specially to simulate recursion. */
!   if (r >= 0 || (r == -1 && (cxt->flags & KSEQ_SUBSEQ) == 0)) /* success! or 
failure! */
  {
_rl_keyseq_chain_dispose ();
*** ../bash-4.3/patchlevel.h2012-12-29 10:47:57.0 -0500
--- patchlevel.h2014-03-20 20:01:28.0 -0400
***
*** 26,30 
 looks for to find the patch level (for the sccs version string). */
  
! #define PATCHLEVEL 2
  
  #endif /* _PATCHLEVEL_H_ */
--- 26,30 
 looks for to find the patch level (for the sccs version string). */
  
! #define PATCHLEVEL 3
  
  #endif /* _PATCHLEVEL_H_ */

-- 
``The lyf so short, the craft so long to lerne.'' - Chaucer
 ``Ars longa, vita brevis'' - Hippocrates
Chet Ramey, ITS, CWRUc...@case.eduhttp://cnswww.cns.cwru.edu/~chet/



Bash-4.3 Official Patch 4

2014-03-31 Thread Chet Ramey
 BASH PATCH REPORT
 =

Bash-Release:   4.3
Patch-ID:   bash43-004

Bug-Reported-by:Daan van Rossum 
Bug-Reference-ID:   <20140307072523.ga14...@flash.uchicago.edu>
Bug-Reference-URL:  

Bug-Description:

The `.' command in vi mode cannot undo multi-key commands beginning with
`c', `d', and `y' (command plus motion specifier).

Patch (apply with `patch -p0'):

*** ../bash-4.3/lib/readline/readline.c 2013-10-28 14:58:06.0 -0400
--- lib/readline/readline.c 2014-03-07 15:20:33.0 -0500
***
*** 965,969 
if (rl_editing_mode == vi_mode && _rl_keymap == vi_movement_keymap &&
key != ANYOTHERKEY &&
!   rl_key_sequence_length == 1 &&  /* XXX */
_rl_vi_textmod_command (key))
  _rl_vi_set_last (key, rl_numeric_arg, rl_arg_sign);
--- 965,969 
if (rl_editing_mode == vi_mode && _rl_keymap == vi_movement_keymap &&
key != ANYOTHERKEY &&
!   _rl_dispatching_keymap == vi_movement_keymap &&
_rl_vi_textmod_command (key))
  _rl_vi_set_last (key, rl_numeric_arg, rl_arg_sign);
*** ../bash-4.3/patchlevel.h2012-12-29 10:47:57.0 -0500
--- patchlevel.h2014-03-20 20:01:28.0 -0400
***
*** 26,30 
 looks for to find the patch level (for the sccs version string). */
  
! #define PATCHLEVEL 3
  
  #endif /* _PATCHLEVEL_H_ */
--- 26,30 
 looks for to find the patch level (for the sccs version string). */
  
! #define PATCHLEVEL 4
  
  #endif /* _PATCHLEVEL_H_ */

-- 
``The lyf so short, the craft so long to lerne.'' - Chaucer
 ``Ars longa, vita brevis'' - Hippocrates
Chet Ramey, ITS, CWRUc...@case.eduhttp://cnswww.cns.cwru.edu/~chet/



Bash-4.3 Official Patch 5

2014-03-31 Thread Chet Ramey
 BASH PATCH REPORT
 =

Bash-Release:   4.3
Patch-ID:   bash43-005

Bug-Reported-by:David Sines 
Bug-Reference-ID:   

Bug-Reference-URL:  
http://lists.gnu.org/archive/html/bug-bash/2014-03/msg00037.html

Bug-Description:

When in Posix mode, bash did not correctly interpret the ANSI-C-style
$'...' quoting mechanism when performing pattern substitution word
expansions within double quotes.

Patch (apply with `patch -p0'):

*** ../bash-4.3/parse.y 2014-02-11 09:42:10.0 -0500
--- parse.y 2014-03-07 20:57:15.0 -0500
***
*** 3399,3403 
   unescaped double-quotes or single-quotes, if any, shall occur." */
/* This was changed in Austin Group Interp 221 */
!   if MBTEST(posixly_correct && shell_compatibility_level > 41 && 
dolbrace_state != DOLBRACE_QUOTE && (flags & P_DQUOTE) && (flags & P_DOLBRACE) 
&& ch == '\'')
continue;
  
--- 3399,3403 
   unescaped double-quotes or single-quotes, if any, shall occur." */
/* This was changed in Austin Group Interp 221 */
!   if MBTEST(posixly_correct && shell_compatibility_level > 41 && 
dolbrace_state != DOLBRACE_QUOTE && dolbrace_state != DOLBRACE_QUOTE2 && (flags 
& P_DQUOTE) && (flags & P_DOLBRACE) && ch == '\'')
continue;
  
*** ../bash-4.3/y.tab.c 2014-02-11 10:57:47.0 -0500
--- y.tab.c 2014-03-28 10:41:15.0 -0400
***
*** 5711,5715 
   unescaped double-quotes or single-quotes, if any, shall occur." */
/* This was changed in Austin Group Interp 221 */
!   if MBTEST(posixly_correct && shell_compatibility_level > 41 && 
dolbrace_state != DOLBRACE_QUOTE && (flags & P_DQUOTE) && (flags & P_DOLBRACE) 
&& ch == '\'')
continue;
  
--- 5711,5715 
   unescaped double-quotes or single-quotes, if any, shall occur." */
/* This was changed in Austin Group Interp 221 */
!   if MBTEST(posixly_correct && shell_compatibility_level > 41 && 
dolbrace_state != DOLBRACE_QUOTE && dolbrace_state != DOLBRACE_QUOTE2 && (flags 
& P_DQUOTE) && (flags & P_DOLBRACE) && ch == '\'')
continue;
  
*** ../bash-4.3/patchlevel.h2012-12-29 10:47:57.0 -0500
--- patchlevel.h2014-03-20 20:01:28.0 -0400
***
*** 26,30 
 looks for to find the patch level (for the sccs version string). */
  
! #define PATCHLEVEL 4
  
  #endif /* _PATCHLEVEL_H_ */
--- 26,30 
 looks for to find the patch level (for the sccs version string). */
  
! #define PATCHLEVEL 5
  
  #endif /* _PATCHLEVEL_H_ */

-- 
``The lyf so short, the craft so long to lerne.'' - Chaucer
 ``Ars longa, vita brevis'' - Hippocrates
Chet Ramey, ITS, CWRUc...@case.eduhttp://cnswww.cns.cwru.edu/~chet/



Bash-4.3 Official Patch 6

2014-03-31 Thread Chet Ramey
 BASH PATCH REPORT
 =

Bash-Release:   4.3
Patch-ID:   bash43-006

Bug-Reported-by:Eduardo A . Bustamante Lopez 
Bug-Reference-ID:   <20140228170013.ga16...@dualbus.me>
Bug-Reference-URL:  
http://lists.gnu.org/archive/html/bug-bash/2014-02/msg00091.html

Bug-Description:

A shell that started with job control active but was not interactive left
the terminal in the wrong process group when exiting, causing its parent
shell to get a stop signal when it attempted to read from the terminal.

Patch (apply with `patch -p0'):

*** ../bash-4.3/jobs.c  2014-01-10 09:05:34.0 -0500
--- jobs.c  2014-03-02 18:05:09.0 -0500
***
*** 4375,4379 
  end_job_control ()
  {
!   if (interactive_shell)  /* XXX - should it be interactive? */
  {
terminate_stopped_jobs ();
--- 4375,4379 
  end_job_control ()
  {
!   if (interactive_shell || job_control)   /* XXX - should it be 
just job_control? */
  {
terminate_stopped_jobs ();
*** ../bash-4.3/patchlevel.h2012-12-29 10:47:57.0 -0500
--- patchlevel.h2014-03-20 20:01:28.0 -0400
***
*** 26,30 
 looks for to find the patch level (for the sccs version string). */
  
! #define PATCHLEVEL 5
  
  #endif /* _PATCHLEVEL_H_ */
--- 26,30 
 looks for to find the patch level (for the sccs version string). */
  
! #define PATCHLEVEL 6
  
  #endif /* _PATCHLEVEL_H_ */

-- 
``The lyf so short, the craft so long to lerne.'' - Chaucer
 ``Ars longa, vita brevis'' - Hippocrates
Chet Ramey, ITS, CWRUc...@case.eduhttp://cnswww.cns.cwru.edu/~chet/



Bash-4.3 Official Patch 7

2014-03-31 Thread Chet Ramey
 BASH PATCH REPORT
 =

Bash-Release:   4.3
Patch-ID:   bash43-007

Bug-Reported-by:geir.ha...@gmail.com
Bug-Reference-ID:   <20140318093650.b181c1c5...@gina.itea.ntnu.no>
Bug-Reference-URL:  
http://lists.gnu.org/archive/html/bug-bash/2014-03/msg00095.html

Bug-Description:

Using compound assignments for associative arrays like

assoc=( [x]= [y]=bar )

left the value corresponding to the key `x' NULL.  This caused subsequent
lookups to interpret it as unset.

Patch (apply with `patch -p0'):

*** ../bash-4.3/arrayfunc.c 2013-08-02 16:19:59.0 -0400
--- arrayfunc.c 2014-03-18 11:08:15.0 -0400
***
*** 598,601 
--- 598,606 
{
  val = expand_assignment_string_to_string (val, 0);
+ if (val == 0)
+   {
+ val = (char *)xmalloc (1);
+ val[0] = '\0';/* like do_assignment_internal */
+   }
  free_val = 1;
}
*** ../bash-4.3/patchlevel.h2012-12-29 10:47:57.0 -0500
--- patchlevel.h2014-03-20 20:01:28.0 -0400
***
*** 26,30 
 looks for to find the patch level (for the sccs version string). */
  
! #define PATCHLEVEL 6
  
  #endif /* _PATCHLEVEL_H_ */
--- 26,30 
 looks for to find the patch level (for the sccs version string). */
  
! #define PATCHLEVEL 7
  
  #endif /* _PATCHLEVEL_H_ */

-- 
``The lyf so short, the craft so long to lerne.'' - Chaucer
 ``Ars longa, vita brevis'' - Hippocrates
Chet Ramey, ITS, CWRUc...@case.eduhttp://cnswww.cns.cwru.edu/~chet/



Bash-4.3 Official Patch 8

2014-03-31 Thread Chet Ramey
 BASH PATCH REPORT
 =

Bash-Release:   4.3
Patch-ID:   bash43-008

Bug-Reported-by:Stephane Chazelas 
Bug-Reference-ID:   <20140318135901.gb22...@chaz.gmail.com>
Bug-Reference-URL:  
http://lists.gnu.org/archive/html/bug-bash/2014-03/msg00098.html

Bug-Description:

Some extended glob patterns incorrectly matched filenames with a leading
dot, regardless of the setting of the `dotglob' option.

Patch (apply with `patch -p0'):

*** ../bash-4.3/lib/glob/gmisc.c2013-10-28 14:45:25.0 -0400
--- lib/glob/gmisc.c2014-03-19 09:16:08.0 -0400
***
*** 211,214 
--- 211,215 
  case '!':
  case '@':
+ case '?':
return (pat[1] == LPAREN);
  default:
*** ../bash-4.3/lib/glob/glob.c 2014-01-31 21:43:51.0 -0500
--- lib/glob/glob.c 2014-03-20 09:01:26.0 -0400
***
*** 180,202 
   int flags;
  {
!   char *pp, *pe, *t;
!   int n, r;
  
pp = pat + 2;
!   pe = pp + strlen (pp) - 1;  /*(*/
!   if (*pe != ')')
! return 0;
!   if ((t = strchr (pp, '|')) == 0)/* easy case first */
  {
*pe = '\0';
r = skipname (pp, dname, flags);/*(*/
*pe = ')';
return r;
  }
while (t = glob_patscan (pp, pe, '|'))
  {
n = t[-1];
t[-1] = '\0';
r = skipname (pp, dname, flags);
t[-1] = n;
if (r == 0) /* if any pattern says not skip, we don't skip */
--- 180,215 
   int flags;
  {
!   char *pp, *pe, *t, *se;
!   int n, r, negate;
  
+   negate = *pat == '!';
pp = pat + 2;
!   se = pp + strlen (pp) - 1;  /* end of string */
!   pe = glob_patscan (pp, se, 0);  /* end of extglob pattern (( */
!   /* we should check for invalid extglob pattern here */
!   /* if pe != se we have more of the pattern at the end of the extglob
!  pattern. Check the easy case first ( */
!   if (pe == se && *pe == ')' && (t = strchr (pp, '|')) == 0)
  {
*pe = '\0';
+ #if defined (HANDLE_MULTIBYTE)
+   r = mbskipname (pp, dname, flags);
+ #else
r = skipname (pp, dname, flags);/*(*/
+ #endif
*pe = ')';
return r;
  }
+ 
+   /* check every subpattern */
while (t = glob_patscan (pp, pe, '|'))
  {
n = t[-1];
t[-1] = '\0';
+ #if defined (HANDLE_MULTIBYTE)
+   r = mbskipname (pp, dname, flags);
+ #else
r = skipname (pp, dname, flags);
+ #endif
t[-1] = n;
if (r == 0) /* if any pattern says not skip, we don't skip */
***
*** 205,219 
  } /*(*/
  
!   if (pp == pe)   /* glob_patscan might find end of pattern */
  return r;
  
!   *pe = '\0';
! #  if defined (HANDLE_MULTIBYTE)
!   r = mbskipname (pp, dname, flags);  /*(*/
! #  else
!   r = skipname (pp, dname, flags);/*(*/
! #  endif
!   *pe = ')';
!   return r;
  }
  #endif
--- 218,227 
  } /*(*/
  
!   /* glob_patscan might find end of pattern */
!   if (pp == se)
  return r;
  
!   /* but if it doesn't then we didn't match a leading dot */
!   return 0;
  }
  #endif
***
*** 278,289 
  {
  #if EXTENDED_GLOB
!   wchar_t *pp, *pe, *t, n;
!   int r;
  
pp = pat + 2;
!   pe = pp + wcslen (pp) - 1;  /*(*/
!   if (*pe != L')')
! return 0;
!   if ((t = wcschr (pp, L'|')) == 0)
  {
*pe = L'\0';
--- 286,298 
  {
  #if EXTENDED_GLOB
!   wchar_t *pp, *pe, *t, n, *se;
!   int r, negate;
  
+   negate = *pat == L'!';
pp = pat + 2;
!   se = pp + wcslen (pp) - 1;  /*(*/
!   pe = glob_patscan_wc (pp, se, 0);
! 
!   if (pe == se && *pe == ')' && (t = wcschr (pp, L'|')) == 0)
  {
*pe = L'\0';
***
*** 292,295 
--- 301,306 
return r;
  }
+ 
+   /* check every subpattern */
while (t = glob_patscan_wc (pp, pe, '|'))
  {
***
*** 306,313 
  return r;
  
!   *pe = L'\0';
!   r = wchkname (pp, dname);   /*(*/
!   *pe = L')';
!   return r;
  #else
return (wchkname (pat, dname));
--- 317,322 
  return r;
  
!   /* but if it doesn't then we didn't match a leading dot */
!   return 0;
  #else
return (wchkname (pat, dname));
*** ../bash-4.3/patchlevel.h2012-12-29 10:47:57.0 -0500
--- patchlevel.h2014-03-20 20:01:28.0 -0400
***
*** 26,30 
 looks for to find the patch level (for the sccs version string). */
  
! #define PATCHLEVEL 7
  
  #endif /* _PATCHLEVEL_H_ */
--- 26,30 
 looks for to find the patch level (for the sccs version string). */
  
! #define PATCHLEVEL 8
  
  #endif /* _PATCHLEVEL_H_ */

-- 
``The lyf so short, the craft so long to lerne.'' - Chaucer
 ``Ars longa, vita brevis'' - Hippocrates
Chet Ramey, ITS, CWRUc...@case.eduhttp://cnswww.cns.cwru.edu/~chet/



Bash-4.2 Official Patch 46

2014-03-31 Thread Chet Ramey
 BASH PATCH REPORT
 =

Bash-Release:   4.2
Patch-ID:   bash42-046

Bug-Reported-by:"Theodoros V. Kalamatianos" 
Bug-Reference-ID:   <20140112011131.ge17...@infinity.metashade.com>
Bug-Reference-URL:  
http://lists.gnu.org/archive/html/bug-bash/2014-01/msg00044.html

Bug-Description:

Bash-4.2 patch 32 introduced a problem with "$@" and arrays expanding empty
positional parameters or array elements when using substring expansion,
pattern substitution, or case modfication.  The empty parameters or array
elements are removed instead of expanding to empty strings ("").

Patch (apply with `patch -p0'):

*** ../bash-4.2-patched/subst.c 2012-12-31 11:52:56.0 -0500
--- subst.c 2014-03-31 14:19:56.0 -0400
***
*** 7243,7247 
ret = alloc_word_desc ();
ret->word = temp1;
!   if (temp1 && QUOTED_NULL (temp1) && (quoted & 
(Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)))
ret->flags |= W_QUOTED|W_HASQUOTEDNULL;
return ret;
--- 7243,7253 
ret = alloc_word_desc ();
ret->word = temp1;
!   /* We test quoted_dollar_atp because we want variants with double-quoted
!"$@" to take a different code path. In fact, we make sure at the end
!of expand_word_internal that we're only looking at these flags if
!quoted_dollar_at == 0. */
!   if (temp1 && 
!   (quoted_dollar_atp == 0 || *quoted_dollar_atp == 0) &&
! QUOTED_NULL (temp1) && (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)))
ret->flags |= W_QUOTED|W_HASQUOTEDNULL;
return ret;
*** ../bash-4.2-patched/patchlevel.hSat Jun 12 20:14:48 2010
--- patchlevel.hThu Feb 24 21:41:34 2011
***
*** 26,30 
 looks for to find the patch level (for the sccs version string). */
  
! #define PATCHLEVEL 45
  
  #endif /* _PATCHLEVEL_H_ */
--- 26,30 
 looks for to find the patch level (for the sccs version string). */
  
! #define PATCHLEVEL 46
  
  #endif /* _PATCHLEVEL_H_ */

-- 
``The lyf so short, the craft so long to lerne.'' - Chaucer
 ``Ars longa, vita brevis'' - Hippocrates
Chet Ramey, ITS, CWRUc...@case.eduhttp://cnswww.cns.cwru.edu/~chet/



Reverse incremental search provoking errors

2014-03-31 Thread Thomas Bolemann
   In bash-4.3-beta2 a new feature has been introduced under
   2. a.
   Changed message when an incremental search fails to include "failed" in
   the prompt and display the entire search string instead of just the
   last
   matching portion.

   But there's another side effect to this:
   the string matching the characters typed first is returned, although
   failed is printed.
   I understand the good intent of this feature, but coming from bash 4.2,
   I find it quite disturbing, as it's provoking errors if one doesn't
   check, if reverse search has succeeded or failed (e.g. for a long
   string) and just presses enter.
   While this has not happened to me yet, I found the previous behaviour
   very comfortable and safe. If no matching results are present I don't
   think its a good idea to print 'failed' and just return the next best
   match.

   (Not very realistic) example search for "longcommand remember-the-milk"
   and a typo:
   "[Ctrl-r] remember-the-milk"  may return "rm somefiles". One has to
   look carefully look if the search has failed otherwise, which many
   people don't do, especially if they're using to the previous behaviour.

   I didn't find a way to turn this feature of and get the old behaviour.
   Is it possible to at least make it optional in the next release that
   the next best match is returned?
   I think most people will notice it just now as it found its way into
   Ubuntu 14.04 LTS released in two weeks, so it will probably stay for a
   while.

   Best regards
   Thomas