; { echo foo & } >[2=] foo dup: Bad file number After a bit of meditation, I think I see the problem. %background invokes %dup to output the job id to stdout. That probably should be caught, but I don't want to figure it out right now....