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

Re: zsh startup files



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 <pws@xxxxxxxxxxxxxxxxx> 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");
  	    }
  	}



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