From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 15290 invoked from network); 25 Mar 2001 22:51:59 -0000 Received: from sunsite.dk (130.225.51.30) by ns1.primenet.com.au with SMTP; 25 Mar 2001 22:51:59 -0000 Received: (qmail 28825 invoked by alias); 25 Mar 2001 22:51:52 -0000 Mailing-List: contact zsh-workers-help@sunsite.dk; run by ezmlm Precedence: bulk X-No-Archive: yes X-Seq: 13755 Received: (qmail 28813 invoked from network); 25 Mar 2001 22:51:51 -0000 From: "Bart Schaefer" Message-Id: <1010325225123.ZM10966@candle.brasslantern.com> Date: Sun, 25 Mar 2001 22:51:22 +0000 In-Reply-To: Comments: In reply to Zefram "Re: "setopt noexec" and interactive shells" (Mar 5, 1:55am) References: X-Mailer: Z-Mail (5.0.0 30July97) To: zsh-workers@sunsite.dk Subject: Re: "setopt noexec" and interactive shells MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii On Mar 5, 1:55am, Zefram wrote: } Subject: Re: "setopt noexec" and interactive shells } } pdksh 5.2.12 does effectively ignore "set -n" interactively, but [...] } its condition for overriding is that the shell is interactive and the } default conditions for interactivity on startup were met -- a shell that's } explicitly made interactive when it would not otherwise have been does } honour "set -n" fully. } } The other way to do this correctly -- other than ignoring it the way } pdksh does, that is -- is to make the option unsettable, like -i, under } the appropriate circumstances. Silent resetting is not good. There's no way to make the option un-, or rather re-, settable because once you're not executing commands the state of the shell is effectively frozen. If ignoreeof is also set, it's painful even to exit. So the closest thing to "default conditions for interactivity on startup" is isatty(0). This could of course be fooled by "exec < /dev/tty" or some such, but if someone is willing to go to that much effort to simulate an interactive startup ... Any comments on this patch? Index: Src/exec.c =================================================================== --- Src/exec.c 2001/03/24 22:19:24 1.128 +++ Src/exec.c 2001/03/25 22:14:08 @@ -2092,7 +2092,7 @@ zwarn("writing redirection not allowed in restricted mode", NULL, 0); execerr(); } - if (unset(EXECOPT)) + if (unset(EXECOPT) && (unset(INTERACTIVE) || !isatty(0))) continue; switch(fn->type) { case REDIR_HERESTR: -- Bart Schaefer Brass Lantern Enterprises http://www.well.com/user/barts http://www.brasslantern.com Zsh: http://www.zsh.org | PHPerl Project: http://phperl.sourceforge.net