Redhat's default /etc/zlogin, /etc/zshrc, etc., contain very annoying defaults. For example, they change the PATH in a way that overides the user's setting in ~/.zprofile. It's not the content of /etc/z* that's annoying (well, it is, but it's not the main point): The problem is that it overrides the user's settings in ~/.zprofile. One of the problems is that /etc/zshrc is read *after* the user's ~/.zprofile! This is a zsh fact (see the manual), so a distribution should be very conservative in what it puts in /etc/zshrc. In my opinion, Redhat should not have a /etc/zshrc at all. But even if you do, you should set variables in there, otherwise users cannot overide them in their ~/.zprofile (the standard Unix tradition is to put variables in .zprofile, not .zshrc, because variables are inherited in the environment - there's no reason to reread them in every interactive shell - just in the login shell). But there's another problem: if a user set variables in the environment, the stuff in /etc/zshenv *also* overides them on every shell (because /etc/zshenv is read in every shell, but ~/.zprofile is not). Now that's really annoying. Currently in every clean redhat install I realise after a few minutes that my path is all wrong, because stuff in /etc/zshrc and /etc/zshenv messed it up (and it overrided the one set in ~/.zprofile), so I just go and do 'rm /etc/z*'...
Fixed in zsh-4.0.2-2