Re: Problem with function cd in bash 4.0
Chet Ramey wrote: Interesting. This happens only on Linux. FreeBSD, MacOS X, and Solaris all interrupt and return to $PS1. Chet Actually, this was happening for me on Solaris too, so looks like not just a Linux thing. But your patch fixed the issue on Solaris as well. Richard -- View this message in context: http://www.nabble.com/Problem-with-function-cd-in-bash-4.0-tp22171999p0451.html Sent from the Gnu - Bash mailing list archive at Nabble.com.
Re: Problem with function cd in bash 4.0
On Wednesday 25 February 2009 16:21:47 Chet Ramey wrote: Yep, it's a bug. Try the attached patch; it works for me. this introduces a bug of it's own though :/. you can no longer use ctrl+c to escape from unbalanced quotes. - type: echo ' - hit enter - hit ctrl+c over and over - bash still waits for the ' to be balanced Still not sure what extra stuff Linux runs to make this only fail there, but here's a patch that should fix it. seems to fix the issue on my system, thanks -mike
Re: Problem with function cd in bash 4.0
Chet Ramey schrieb: 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. Works for me, too. Thanks! Bernd -- Bernd Eggink http://sudrala.de
Re: Problem with function cd in bash 4.0
Richard Leeden wrote: Unfortunately doesn't work for me I'm doing something to Bernd - i.e. I have a function called cd that calls the builtin cd after doing some extra things. In bash 4.0 with my cd function enabled I get a bus error and the shell quits each time I attempt a tab completion on cd. To make things easier I replaced my (rather complicated) function with the very simple: That's a problem with completion, not anything to do with whether you have a function named `cd' defined. I posted a patch for this earlier. Look at http://lists.gnu.org/archive/html/bug-bash/2009-02/msg00153.html and see if it fixes things for you. Chet -- ``The lyf so short, the craft so long to lerne.'' - Chaucer Chet Ramey, ITS, CWRUc...@case.eduhttp://cnswww.cns.cwru.edu/~chet/
Problem with function cd in bash 4.0
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. Regards, Bernd -- Bernd Eggink http://sudrala.de
Re: Problem with function cd in bash 4.0
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, CWRUc...@case.eduhttp://cnswww.cns.cwru.edu/~chet/ *** ../bash-4.0/parse.y 2009-01-08 08:29:12.0 -0500 --- parse.y 2009-02-23 22:40:55.0 -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]; }