Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: zsh weird behaviour (possibly bug?)



"Janos Barbero" wrote:
> I often notice that complex shell commands (usually with 5-10 pipes
> and plenty of awk/sed) produce no output in zsh, but work fine in
> bash. I found a really simple one today.
>    ls | sed 's/\<\(.\)\([^ ]*\)/\u\1\L\2/g'
> This produces no output in zsh, but does in any bash version. Further
> investigation revealed this to be due to my precmd's/postcmd's. So
> some more data:
> 1: precmd () {     print -Pn "\ek%n@%m %~$ \e\\"           }
> 2: preexec() {     print -Pn "\ek%n@%m %~$ $1\e\\"         }
> 3: precmd () {     print -Pn "\ek%~\e\\"                   }
> 4: preexec() {     print -Pn "\ek%~ $1\e\\"                }
> 
> If I have only line 4, command doesn't return (I have to manually kill
> the window), but plain ls works. If I leave lines 3 and 4, no output.
> Leaving either or both lines 1 and 2, it works fine. (I tried these
> with nothing else in my .zshrc.)
> 
> Is the problem with my precmd/postcmd 3 and 4, or is this a zsh bug?

It's hard to tell, but we can certainly say it's got *something* to do
with the way your terminal behaves.  I don't recognise those escape
sequences, but the fact that changing them makes a difference suggests
the terminal is doing something weird with the output.

You didn't say what system you're on: if it's a MAC, somebody reported a
similar problem recently.  See the thread at
 http://www.zsh.org/cgi-bin/mla/redirect?WORKERNUMBER=23429

-- 
Peter Stephenson <pws@xxxxxxx>                  Software Engineer
CSR PLC, Churchill House, Cambridge Business Park, Cowley Road
Cambridge, CB4 0WZ, UK                          Tel: +44 (0)1223 692070


To access the latest news from CSR copy this link into a web browser:  http://www.csr.com/email_sig.php

To get further information regarding CSR, please visit our Investor Relations page at http://ir.csr.com/csr/about/overview



Messages sorted by: Reverse Date, Date, Thread, Author