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

Re: root's path

On Mar 17, 12:21pm, Mikael Magnusson wrote:
} > Shouldn't $PATH be set in /etc/zshenv rather than zprofile?
} > Else, it's impossible to override $PATH in ~/.zshenv.
} Absolutely not, if you set PATH from *env, it makes it impossible to
} inherit the PATH from the parent process' environment, even in
} scripts, which will break a lot of things.

I'd go further and say that except in carefully considered circumstances,
the /etc/zshenv file should always be empty or not exist.  If it does set
the path, it should only append to it, not prepend or clobber (again,
except in certain circumstances).

} The path should only be set once on login of the current session, ie
} in zprofile if zsh is your login shell, otherwise in the startup file
} for your login shell.

This is ideal but practically speaking has become unworkable in recent
years.  The use of remote terminals and window systems has resulted in
an unpredictable variety of configurations such that there is no way to
guarantee that any particular interactive shell is a login shell or was
started from a login shell environment; i.e., "current session" is now
pretty much meaningless in the process environment sense.

In fact the OP's most likely problem is that on the "good system" he
has a login shell (or there is one somewhere nearer the root of his
process tree), but on the "bad system" he has only an interactive shell.

So it's often necessary to adjust the path in /etc/zshrc to make sure it
is sane for all interactive shells.  Or, after careful consideration, to
do so in /etc/zshenv if the path for NON-interactive shells is incomplete.

Barton E. Schaefer

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