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

Re: "setopt noexec" and interactive shells

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);
-	    if (unset(EXECOPT))
+	    if (unset(EXECOPT) && (unset(INTERACTIVE) || !isatty(0)))
 	    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   

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