Bernd Eggink wrote: > I normally wrap the builtin cd into a function cd, which does some > additional things and then calls the builtin. Example: > > function cd > { > local list=$(echo *.bui) > # ... > builtin cd "$1" > } > > I have a PS1 like this: > > PS1="\\w \$ " > > With bash 3, this worked well; cd-ing into a directory changed the > prompt immediately. With bash 4, however, the prompt keeps unchanged > after a call to cd and only gets adjusted after the _next_ command. I > noticed that this depends on a subshell being used in the function. > Without that, it behaves as before. > > Is that a bug? I can get the intended behaviour by putting > > eval "PS1='$PS1'" > > at the end of the function, but that's a rather ugly workaround.
Yep, it's a bug. Try the attached patch; it works for me. Chet -- ``The lyf so short, the craft so long to lerne.'' - Chaucer Chet Ramey, ITS, CWRU c...@case.edu http://cnswww.cns.cwru.edu/~chet/
*** ../bash-4.0/parse.y 2009-01-08 08:29:12.000000000 -0500 --- parse.y 2009-02-23 22:40:55.000000000 -0500 *************** *** 1616,1623 **** int *ret; ! ret = (int *)xmalloc (3 * sizeof (int)); ret[0] = last_read_token; ret[1] = token_before_that; ret[2] = two_tokens_ago; return ret; } --- 1616,1624 ---- int *ret; ! ret = (int *)xmalloc (4 * sizeof (int)); ret[0] = last_read_token; ret[1] = token_before_that; ret[2] = two_tokens_ago; + ret[3] = current_token; return ret; } *************** *** 1632,1635 **** --- 1633,1637 ---- token_before_that = ts[1]; two_tokens_ago = ts[2]; + current_token = ts[3]; }