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

Re: simple documentation bug



On Thu, 30 Oct 2008 12:18:48 +0100
<Norman.Azadian@xxxxxxxxxxxx> wrote:
> According to zsh(1):
> 
>  "Commands  are  first  read from /etc/zshenv; this cannot be overridden."
> 
> We're running Ubuntu (Heron, I believe) with zsh 4.3.4, and /etc/zshenv
> is never read.  Instead, it reads from /etc/zsh/zshenv.

Bug reports go to zsh-workers@xxxxxxxxxxx

This is a long-standing issue, but it turns out it's not hard to fix if you
have Yodl to rerun.  We actually distribute documentation preformatted, and
there it's a pig to fix, since it needs all the various formats to
be replaced in situ.

The following adds notes that should help package maintainers, at least.

Index: INSTALL
===================================================================
RCS file: /cvsroot/zsh/zsh/INSTALL,v
retrieving revision 1.36
diff -u -r1.36 INSTALL
--- INSTALL	1 Jun 2008 17:58:42 -0000	1.36
+++ INSTALL	30 Oct 2008 12:03:52 -0000
@@ -407,6 +407,13 @@
 --disable-SCRIPTNAME option to "configure".  The --disable-etcdir option
 disables all startup/shutdown files which are not explicitly enabled.
 
+The precompiled documentation comes with startup files listed
+as being in the /etc directory.  If yodl is available, running
+"touch version.yo" and "make" in the Doc directory should produce
+correctly substituted documentation.  (This has to be run by hand
+to avoid introducing a dependency on yodl on systems where the precompiled
+documentation is sufficient.)
+
 Shell functions
 ---------------
 
Index: Doc/Makefile.in
===================================================================
RCS file: /cvsroot/zsh/zsh/Doc/Makefile.in,v
retrieving revision 1.42
diff -u -r1.42 Makefile.in
--- Doc/Makefile.in	26 Apr 2008 19:48:26 -0000	1.42
+++ Doc/Makefile.in	30 Oct 2008 12:03:52 -0000
@@ -210,11 +210,19 @@
 
 zshzle.1: Zsh/zle.yo
 
+# This should depend on config.status to get the /etc files right
+# but that would introduce a dependency on Yodl in shipped versions
+# of the shell that we want to avoid.
 version.yo: $(sdir_top)/Config/version.mk
 	( \
 	  echo 'IFDEF(INCWSLEVEL)(INCWSLEVEL())(STARTDEF())'; \
 	  echo 'def(version)(0)('$(VERSION)')'; \
 	  echo 'def(date)(0)('$(VERSION_DATE)')'; \
+	  echo 'def(zshenv)(0)(@zshenv@)'; \
+	  echo 'def(zprofile)(0)(@zprofile@)'; \
+	  echo 'def(zshrc)(0)(@zshrc@)'; \
+	  echo 'def(zlogin)(0)(@zlogin@)'; \
+	  echo 'def(zlogout)(0)(@zlogout@)'; \
 	  echo 'IFDEF(DECWSLEVEL)(DECWSLEVEL())(ENDDEF())#' | tr '#' '\\'; \
 	) > $(sdir)/version.yo
 
Index: Doc/Zsh/filelist.yo
===================================================================
RCS file: /cvsroot/zsh/zsh/Doc/Zsh/filelist.yo,v
retrieving revision 1.2
diff -u -r1.2 filelist.yo
--- Doc/Zsh/filelist.yo	1 Apr 2000 20:43:44 -0000	1.2
+++ Doc/Zsh/filelist.yo	30 Oct 2008 12:03:52 -0000
@@ -7,9 +7,9 @@
 list(tt($ZDOTDIR/.zlogin))
 list(tt($ZDOTDIR/.zlogout))
 list(tt(${TMPPREFIX}*)   (default is /tmp/zsh*))
-list(tt(/etc/zshenv))
-list(tt(/etc/zprofile))
-list(tt(/etc/zshrc))
-list(tt(/etc/zlogin))
-list(tt(/etc/zlogout)    (installation-specific - tt(/etc) is the default))
+list(tt(zshenv()))
+list(tt(zprofile()))
+list(tt(zshrc()))
+list(tt(zlogin()))
+list(tt(zlogout())    (installation-specific - tt(/etc) is the default))
 endlist()
Index: Doc/Zsh/files.yo
===================================================================
RCS file: /cvsroot/zsh/zsh/Doc/Zsh/files.yo,v
retrieving revision 1.5
diff -u -r1.5 files.yo
--- Doc/Zsh/files.yo	20 Mar 2006 11:06:25 -0000	1.5
+++ Doc/Zsh/files.yo	30 Oct 2008 12:03:52 -0000
@@ -11,10 +11,11 @@
 pindex(NO_GLOBAL_RCS, use of)
 vindex(ZDOTDIR, use of)
 cindex(zshenv)
-Commands are first read from tt(/etc/zshenv); this cannot be overridden.
+Commands are first read from tt(zshenv()); this cannot be overridden.
 Subsequent behaviour is modified by the tt(RCS) and
 tt(GLOBAL_RCS) options; the former affects all startup files, while the
-second only affects those in the tt(/etc) directory.  If one of the options
+second only affects global startup files (those shown here with an
+path starting with a tt(/)).  If one of the options
 is unset at any point, any subsequent startup file+LPAR()s+RPAR()
 of the corresponding
 type will not be read.  It is also possible for a file in tt($ZDOTDIR) to
@@ -25,17 +26,17 @@
 pindex(LOGIN, use of)
 cindex(zprofile)
 If the shell is a login shell, commands
-are read from tt(/etc/zprofile) and then tt($ZDOTDIR/.zprofile).
+are read from tt(zprofile()) and then tt($ZDOTDIR/.zprofile).
 cindex(zshrc)
 Then, if the shell is interactive,
-commands are read from tt(/etc/zshrc) and then tt($ZDOTDIR/.zshrc).
+commands are read from tt(zshrc()) and then tt($ZDOTDIR/.zshrc).
 cindex(zlogin)
-Finally, if the shell is a login shell, tt(/etc/zlogin) and
+Finally, if the shell is a login shell, tt(zlogin()) and
 tt($ZDOTDIR/.zlogin) are read.
 
 cindex(zlogout)
 When a login shell exits, the files tt($ZDOTDIR/.zlogout) and then
-tt(/etc/zlogout) are read.  This happens with either an explicit exit
+tt(zlogout()) are read.  This happens with either an explicit exit
 via the tt(exit) or tt(logout) commands, or an implicit exit by reading
 end-of-file from the terminal.  However, if the shell terminates due
 to tt(exec)'ing another process, the logout files are not read.
@@ -46,10 +47,10 @@
 
 vindex(HOME, use of)
 If tt(ZDOTDIR) is unset, tt(HOME) is used instead.
-Those files listed above as being in tt(/etc) may be in another
+Files listed above as being in tt(/etc) may be in another
 directory, depending on the installation.
 
-As tt(/etc/zshenv) is run for all instances of zsh, it is important that
+As tt(zshenv()) is run for all instances of zsh, it is important that
 it be kept as small as possible.  In particular, it is a good idea to
 put code that does not need to be run for every single shell behind
 a test of the form `tt(if [[ -o rcs ]]; then ...)' so that it will not
Index: Doc/Zsh/options.yo
===================================================================
RCS file: /cvsroot/zsh/zsh/Doc/Zsh/options.yo,v
retrieving revision 1.67
diff -u -r1.67 options.yo
--- Doc/Zsh/options.yo	26 Oct 2008 17:57:13 -0000	1.67
+++ Doc/Zsh/options.yo	30 Oct 2008 12:03:52 -0000
@@ -730,19 +730,19 @@
 cindex(startup files, global, inhibiting)
 cindex(files, global startup, inhibiting)
 item(tt(GLOBAL_RCS) (tt(-d)) <D>)(
-If this option is unset, the startup files tt(/etc/zprofile),
-tt(/etc/zshrc), tt(/etc/zlogin) and tt(/etc/zlogout) will not be run.  It
+If this option is unset, the startup files tt(zprofile()),
+tt(zshrc()), tt(zlogin()) and tt(zlogout()) will not be run.  It
 can be disabled and re-enabled at any time, including inside local startup
 files (tt(.zshrc), etc.).
 )
 pindex(RCS)
 cindex(startup files, sourcing)
 item(tt(RCS) (tt(PLUS()f)) <D>)(
-After tt(/etc/zshenv) is sourced on startup, source the
-tt(.zshenv), tt(/etc/zprofile), tt(.zprofile),
-tt(/etc/zshrc), tt(.zshrc), tt(/etc/zlogin), tt(.zlogin), and tt(.zlogout)
+After tt(zshenv()) is sourced on startup, source the
+tt(.zshenv), tt(zprofile()), tt(.zprofile),
+tt(zshrc()), tt(.zshrc), tt(zlogin()), tt(.zlogin), and tt(.zlogout)
 files, as described in noderef(Files).
-If this option is unset, the tt(/etc/zshenv) file is still sourced, but any
+If this option is unset, the tt(zshenv()) file is still sourced, but any
 of the others will not be; it can be set at any time to prevent the
 remaining startup files after the currently executing one from
 being sourced.

-- 
Peter Stephenson <pws@xxxxxxx>                  Software Engineer
CSR PLC, Churchill House, Cambridge Business Park, Cowley Road
Cambridge, CB4 0WZ, UK                          Tel: +44 (0)1223 692070



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