diff --git a/src/cmd/ksh93/bltins/misc.c b/src/cmd/ksh93/bltins/misc.c index 0f86a1831..9d299d9a3 100644 --- a/src/cmd/ksh93/bltins/misc.c +++ b/src/cmd/ksh93/bltins/misc.c @@ -418,8 +418,7 @@ int b_bg(register int n,register char *argv[],Shbltin_t *context) argv += opt_info.index; if(!sh_isoption(SH_MONITOR) || !job.jobcontrol) { - if(sh_isstate(SH_INTERACTIVE)) - errormsg(SH_DICT,ERROR_exit(1),e_no_jctl); + errormsg(SH_DICT,ERROR_exit(1),e_no_jctl); return(1); } if(flag=='d' && *argv==0) diff --git a/src/cmd/ksh93/sh/subshell.c b/src/cmd/ksh93/sh/subshell.c index 51bc5aa16..0de8fe914 100644 --- a/src/cmd/ksh93/sh/subshell.c +++ b/src/cmd/ksh93/sh/subshell.c @@ -633,6 +633,7 @@ Sfio_t *sh_subshell(Shell_t *shp,Shnode_t *t, volatile int flags, int comsub) if(shp->savesig < 0) { shp->savesig = 0; + sh_offstate(SH_INTERACTIVE); sh_exec(t,flags); } }