summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--Doc/Zsh/params.yo3
-rw-r--r--Src/init.c25
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 <p.w.stephenson@ntlworld.com>
+
+ * Teubel György: 39167: Src/init.c, Doc/Zsh/params.yo: Make $ENV
+ more like POSIX.
+
2016-09-04 Daniel Shahaf <d.s@daniel.shahaf.name>
* 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.