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

Re: "Once-a-day" long delay before startup

On Aug 19,  8:47pm, gi1242+zsh@xxxxxxxxx wrote:
} Subject: Re: "Once-a-day" long delay before startup
} On Thu, Aug 18, 2011 at 09:05:58PM -0700, Bart Schaefer wrote:
} > Refer to my earlier reply -- do as soon as possible during startup:
} > 
} >     unsetopt hashcmds hashdirs hashlistall
} Indeed. Even with
}     unsetopt hashcmds hashdirs
} zsh starts quickly.

Yes, as I mentioned, hashlistall really only applies later, but there
is no point in leaving it set if the other two are unset.

} I'm not sure how this problem can be solved (if at all).

Why is the above not a solution?

I suppose you mean a solution that doesn't require you to change your
zshenv configuration.  One possibility is that we could declare the
hashcmds and hashdirs options to be obsolete, and no longer have them
on by default.  (I doubt they're necessary for non-interactive shells
in any event.)  Meanwhile ...

Here's a crude pass at a function set for caching the hash table.  It
writes the current value of $PATH as the first line of the file and
reads back that line to determine whether the file matches the path
in the current shell.  The store function fills the cache and writes
the file all in the background.  Improvements are possible.

emulate -R zsh -c '#
cachehash_valid() {
  local _typeset cachepath
  [[ -n $cachefile && -O $cachefile &&
     -r $cachefile && ! -w $cachefile ]] &&
  IFS="=" read _typeset cachepath < $cachefile &&
  [[ $cachepath == $PATH ]]
cachehash_store() {
  local cachefile=${ZDOTDIR:-$HOME}/.zcachehash
  { hash -f && umask 0277 &&
    { typeset -p PATH
      print "hash -r"
      hash -L } >| $cachefile-$$ &&
    command mv -f $cachefile-$$ $cachefile } &!
cachehash_load() {
  local cachefile=${ZDOTDIR:-$HOME}/.zcachehash
  cachehash_valid && source $cachefile

Also, I just invented that idiom of '# ... #' for wrapping the argument
of "emulate zsh -c ..." but it seems like a good way to make obvious
the presence of the quotes.

Barton E. Schaefer

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