From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 5468 invoked from network); 25 Mar 1999 11:19:46 -0000 Received: from sunsite.auc.dk (130.225.51.30) by ns1.primenet.com.au with SMTP; 25 Mar 1999 11:19:45 -0000 Received: (qmail 18282 invoked by alias); 25 Mar 1999 11:18:26 -0000 Mailing-List: contact zsh-users-help@sunsite.auc.dk; run by ezmlm Precedence: bulk X-No-Archive: yes X-Seq: 2236 Received: (qmail 18273 invoked from network); 25 Mar 1999 11:18:18 -0000 Message-Id: <9903251117.AA09841@rouble.olsen.ch> From: Doug Morris To: monnier@tequila.cs.yale.edu, zsh-users@sunsite.auc.dk X-Mailer: nmh-1.0 Subject: Re: zsh startup files In-Reply-To: Your message of "Thu, 25 Mar 1999 00:53:32 EST." <19990325005332.B5194@astaroth.nit.gwu.edu> Date: Thu, 25 Mar 1999 12:17:31 +0100 Sender: doug@mail.olsen.ch I can vaguely see a reason for this. The files are sourced differently depending on the type of the shell being started. ie: Always sourced /etc/zshenv ~/.zshenv Sourced for non-interactive login shells /etc/zshenv ~/.zshenv /etc/zprofile ~/.zprofile /etc/zlogin ~/.zlogin Sourced for interactive login shells /etc/zshenv ~/.zshenv /etc/zprofile ~/.zprofile /etc/zshrc ~/.zshrc /etc/zlogin ~/.zlogin So it almost makes sense. You don't want the ~/.z* files waiting for all the /etc/z* files to be sourced first. Still, this doesn't seem like it would be too difficult to correct. The thing to do, though, would be to change the order to: Non-interactive Login shell /etc/zshenv /etc/zprofile /etc/zlogin ~/.zprofile ~/.zshenv ~/.zlogin Interactive Login Shell /etc/zshenv /etc/zprofile /etc/zshrc /etc/zlogin ~/.zshenv ~/.zprofile ~/.zshrc ~/.zlogin I believe the diff below of init.c from zsh-3.0.5 will produce this behavior. It appears to apply to zsh-3.1.5 as well, though I haven't tried building it to make sure. Since writing the above, I've received the list message from Peter Stephenson saying there may be a good reason for leaving things alone. I guess this diff may or may not be useful. However, I'd argue that, if you're going to make it a switchable option. It should use this order by default, and the switch should enable the old source order. Maintaining backward compatibility is a worthy plan, but I think correcting this odd order is better in the long run and should be the default. The option should be provided to allow people who need time to migrate their environment a temporary workaround. -Doug Morris "You don't have to deceive programmers to make them think that hours of painstaking, often frustrating work is fun... they do it to themselves." Noel Giffin, The Stone Soup Story *** init.c.orig Thu Mar 25 09:35:12 1999 --- init.c Thu Mar 25 10:03:47 1999 *************** *** 744,770 **** source(GLOBAL_ZSHENV); #endif if (isset(RCS)) { - if (unset(PRIVILEGED)) - sourcehome(".zshenv"); - if (islogin) { #ifdef GLOBAL_ZPROFILE source(GLOBAL_ZPROFILE); #endif - if (unset(PRIVILEGED)) - sourcehome(".zprofile"); - } - if (interact) { #ifdef GLOBAL_ZSHRC source(GLOBAL_ZSHRC); #endif - if (unset(PRIVILEGED)) - sourcehome(".zshrc"); - } - if (islogin) { #ifdef GLOBAL_ZLOGIN source(GLOBAL_ZLOGIN); #endif ! if (unset(PRIVILEGED)) sourcehome(".zlogin"); } } --- 744,768 ---- source(GLOBAL_ZSHENV); #endif if (isset(RCS)) { #ifdef GLOBAL_ZPROFILE + if (islogin) source(GLOBAL_ZPROFILE); #endif #ifdef GLOBAL_ZSHRC + if (interact) source(GLOBAL_ZSHRC); #endif #ifdef GLOBAL_ZLOGIN + if (islogin) source(GLOBAL_ZLOGIN); #endif ! if (unset(PRIVILEGED)) { ! sourcehome(".zshenv"); ! if (islogin) ! sourcehome(".zprofile"); ! if (interact) ! sourcehome(".zshrc"); ! if (islogin) sourcehome(".zlogin"); } }