
Richard Hartmann richih.mailinglist@gmail.com:
On Thu, Jul 24, 2008 at 14:58, Frank Terbeck ft@grml.org wrote:
- Don't touch the current zshrc at all. It works fine and should be left intact unmodified.
We'll need to stop the normal zshrc from sourcing, so something like:
If there _is_ no normal zshrc, zsh-newuser-install will run. As we can easily replace this function, ZSH does the handling of this for free.
As I said, I would not want to touch /etc/zsh/zshrc. It will always be there. Hence, the catch is needed.
I also do not want to touch ~/.zshrc. It should always be there. If we can set ZDOTDIR before zsh is run, we do have means to support the *full* range of zsh config files. No need to touch ~/.zshrc at all.
I really would prefer to keep grml's zsh config like it is now, and if you want to switch, you use a function, say 'zmode <whateverrc>' to spawn a differently set up shell.
You can even write the current mode into a file, so that subsequently opened shells automatically use that setup.
No need to fiddle with newuser-install, at all.
[...]
- add /etc/zsh/rcs/richih.d/ at the *beginning* be $fpath so that colliding functions are not taken from the default dir, but from the dir that is part of the config, that is in action.
[[ -n $ZSHRC_ALT ]] && . /etc/zsh/rcs/$ZSHRC_ALT.d
in all zshrcs would mean you can fork and otherwise mangle them without needing to touch anything in the actual file.
With '/etc/zsh/rcs/$ZSHRC_ALT.d' being a directory, that would certainly lead to funny results.
It should be a directory that holds the function files specific for the configuration in question. And in order to overwrite same-named functions from /etc/zsh/functions.d it *must* be put at the start of $fpath.
Do NOT source /etc/zsh/zshrc in that case.
This should exist and overwrite the normal zsh-newuser-install.
It shou
Do NOT source ~/.zshrc in that case (set $ZDOTDIR to ~/.zshrc.$ZSHRC_ALT - that would make ~/.zshrc.$ZSHRC_ALT/.zshrc to be sourced; standard zsh mechanism.)
We should touch a .zshrc in there if a given configuration does not provide one in order to avoid the newuser-module-dialog.
I would rather have a ~/.zshrc that simply uses $ZDOTDIR to source everything. Solves two problems in one go.
That's not what $ZDOTDIR is meant for at all. It is meant for switching to alternate configurations.
If $ZDOTDIR is unset, the value of $HOME is used. Hence $HOME/.zshrc is used in normal environments.
Is $ZDOTDIR is /foo/bar/, /foo/bar/.zshrc is used. No matter what $HOME is set to.
This is (besides the obvious need to set $ZSHRC_ALT, and the previously explained need for setting $fpath) the reason for my point no. 5.
Do the handling of $ZSHRC_ALT, $ZDOTDIR and $fpath in the global zshenv (/etc/zsh/zshenv) in a
if [[ -o interactive ]] ; then fi
Block;
Would also be solved by the above, so make that three.
It wouldn't. IMHO. See above.
Regards, Frank