diff -up ksh-20100621/src/cmd/ksh93/sh/xec.c.justone ksh-20100621/src/cmd/ksh93/sh/xec.c --- ksh-20100621/src/cmd/ksh93/sh/xec.c.justone 2012-01-18 12:03:04.588427696 +0100 +++ ksh-20100621/src/cmd/ksh93/sh/xec.c 2012-01-18 12:05:01.644335287 +0100 @@ -1426,7 +1426,7 @@ int sh_exec(register const Shnode_t *t, sh_iounsave(shp); topfd = shp->topfd; sh_redirect(shp,t->tre.treio,1); - if(shp->topfd > topfd) + if(!no_fork && shp->topfd > topfd) { job_lock(); while((parent = vfork()) < 0)