From fde365ea8ba91a4e7daa27dfd63fdadb55a882f5 Mon Sep 17 00:00:00 2001 From: Teubel György Date: Sat, 3 Sep 2016 23:06:30 +0200 Subject: 39167: Make $ENV handling more like POSIX --- ChangeLog | 5 +++++ Doc/Zsh/params.yo | 3 ++- Src/init.c | 25 ++++++++++++++----------- 3 files changed, 21 insertions(+), 12 deletions(-) diff --git a/ChangeLog b/ChangeLog index b6f4836d7..f5d18990a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2016-09-05 Peter Stephenson + + * Teubel György: 39167: Src/init.c, Doc/Zsh/params.yo: Make $ENV + more like POSIX. + 2016-09-04 Daniel Shahaf * unposted: Src/Zle/comp.h, Src/Zle/complete.c: internals: diff --git a/Doc/Zsh/params.yo b/Doc/Zsh/params.yo index 55930ed7b..03625ce24 100644 --- a/Doc/Zsh/params.yo +++ b/Doc/Zsh/params.yo @@ -1059,7 +1059,8 @@ If the tt(ENV) environment variable is set when zsh is invoked as tt(sh) or tt(ksh), tt($ENV) is sourced after the profile scripts. The value of tt(ENV) is subjected to parameter expansion, command substitution, and arithmetic expansion before being interpreted as a pathname. Note that -tt(ENV) is em(not) used unless zsh is emulating bf(sh) or bf(ksh). +tt(ENV) is em(not) used unless the shell is interactive and zsh is +emulating bf(sh) or bf(ksh). ) vindex(FCEDIT) item(tt(FCEDIT))( diff --git a/Src/init.c b/Src/init.c index 20a07eb0a..3dea179b9 100644 --- a/Src/init.c +++ b/Src/init.c @@ -712,7 +712,7 @@ init_term(void) if (tgetent(termbuf, term) != TGETENT_SUCCESS) #endif { - if (isset(INTERACTIVE)) + if (interact) zerr("can't find terminal definition for %s", term); errflag &= ~ERRFLAG_ERROR; termflags |= TERM_BAD; @@ -1205,19 +1205,22 @@ run_init_scripts(void) if (islogin) source("/etc/profile"); if (unset(PRIVILEGED)) { - char *s = getsparam("ENV"); if (islogin) sourcehome(".profile"); - noerrs = 2; - if (s) { - s = dupstring(s); - if (!parsestr(&s)) { - singsub(&s); - noerrs = 0; - source(s); + + if (interact) { + noerrs = 2; + char *s = getsparam("ENV"); + if (s) { + s = dupstring(s); + if (!parsestr(&s)) { + singsub(&s); + noerrs = 0; + source(s); + } } + noerrs = 0; } - noerrs = 0; } else source("/etc/suid_profile"); } else { @@ -1227,7 +1230,7 @@ run_init_scripts(void) if (isset(RCS) && unset(PRIVILEGED)) { - if (isset(INTERACTIVE)) { + if (interact) { /* * Always attempt to load the newuser module to perform * checks for new zsh users. Don't care if we can't load it. -- cgit 1.4.1