According to manpage and tests on current en_US/de_DE installs, zsh loads /etc/zsh/zshenv, then ~/.zshenv, and - if interactive - /etc/zsh/zprofile and ~/.zshrc The current /etc/zsh/zprofile sources /etc/profile.env (the output of env-update with LANG and lots of variables) and reset PATH. Problem: Setting LANG/PATH in ~/.zshenv for interactive and non-interactive zsh sessions doesn't work for interactive sessions, because it's overwitten by /etc/zsh/zprofile. Solution: rename /etc/zsh/zprofile to /etc/zsh/zshenv Thanks michael@io zsh % cvs diff Index: zsh-4.3.11-r1.ebuild =================================================================== RCS file: /var/cvsroot/gentoo-x86/app-shells/zsh/zsh-4.3.11-r1.ebuild,v retrieving revision 1.9 diff -u -B -r1.9 zsh-4.3.11-r1.ebuild --- zsh-4.3.11-r1.ebuild 24 Mar 2011 18:29:18 -0000 1.9 +++ zsh-4.3.11-r1.ebuild 11 Apr 2011 16:50:34 -0000 @@ -61,12 +61,12 @@ epatch "${FILESDIR}/${PN}"-init.d-gentoo-r1.diff \ "${FILESDIR}"/4.3.11-subst.patch - cp "${FILESDIR}"/zprofile-1 "${T}"/zprofile || die - eprefixify "${T}"/zprofile || die + cp "${FILESDIR}"/zprofile-1 "${T}"/zshenv || die + eprefixify "${T}"/zshenv || die if use prefix ; then - sed -i -e 's|@ZSH_PREFIX@||' -e '/@ZSH_NOPREFIX@/d' "${T}"/zprofile || die + sed -i -e 's|@ZSH_PREFIX@||' -e '/@ZSH_NOPREFIX@/d' "${T}"/zshenv || die else - sed -i -e 's|@ZSH_NOPREFIX@||' -e '/@ZSH_PREFIX@/d' -e 's|""||' "${T}"/zprofile || die + sed -i -e 's|@ZSH_NOPREFIX@||' -e '/@ZSH_PREFIX@/d' -e 's|""||' "${T}"/zshenv || die fi }
Solution: Don't set LANG/PATH in ~/.zshenv! See the linked bug. *** This bug has been marked as a duplicate of bug 19924 ***
Learn how to use zsh