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

Re: Broken /etc/zshrc ?

On Aug 19,  5:51pm, Vincent Lefevre wrote:
} The /etc/zshrc (system zshrc file) contains the following line:
} source /etc/profile
} Isn't this /etc/zshrc file broken? Shouldn't the /etc/profile
} be sourced in the /etc/zshenv (which doesn't exist here)?

I would think /etc/profile should be sourced in /etc/zprofile, if at all.

/etc/zshenv is sourced by *every* zsh, even non-interactive scripts that
are started with "zsh -f".  /etc/profile is intended to be sourced by
login shells.  /etc/zshrc is sourced by login shells, but also by other
interactive shells.  I'm not sure why so many linux distributors thought
that /etc/profile needed to be read from /etc/zshrc, but it seems to be
a common problem.

RedHat has finally got this bit right as of the 3.0.7 RPM, but that one
still has other cruft in /etc/zshrc.  (I haven't looked at the RPMs for
RawHide.)  I know the Mandrake folks put quite a bit of thought & effort
into setting up the /etc/z* files because of issues setting up the local
language environment.

} But /etc/profile sets the path (I think this is OK). Thus, if a
} user sets his path in his .zshenv, then this path is lost because
} /etc/zshrc is sourced after the user's .zshenv file.

This would still be true with /etc/zprofile, unfortunately.

You could put "source ~/.zshenv" in ~/.zshrc ... or you could put
"readonly path" in ~/.zshenv, I suppose.  Or in 4.0.x ~/.zshenv could
start with

    setopt no_global_rcs
    [[ -o login && -r /etc/zprofile ]] && source /etc/zprofile
    [[ -o interactive && -r /etc/zshrc ]] && source /etc/zshrc
    [[ -o login && -r /etc/zlogin ]] && source /etc/zlogin

to cause all the /etc/z* files to be loaded before any of your own.  In
that case ~/.zlogout should end with

    [[ -r /etc/zlogout ]] && source /etc/zlogout

However, if zsh was compiled with a global RCs location other than /etc,
the above could get you into trouble.

} I don't know if the /etc/zshrc was provided when compiling and
} installing zsh or provided by my Linux distribution (SuSE 7.2).

It wasn't provided when compiling and installing zsh.  We generally
recommend that (with exceptions like Mandrake's language environment)
the /etc/z* files not be used at all.

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