39167: Make $ENV handling more like POSIX

This commit is contained in:
Teubel György 2016-09-03 23:06:30 +02:00 committed by Peter Stephenson
parent 02bb3de257
commit fde365ea8b
3 changed files with 21 additions and 12 deletions

View file

@ -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:

View file

@ -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))(

View file

@ -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.