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

Functions in system init scripts

Hi all,

I guess this an age old problem but it bit me again after few years hiatus. Probably most compactly described by this screenshot from gnome-terminal:

localhost:~> cat /etc/profile.d/functest.sh
functest ()
  echo function functest defined
export FUNCVAR
localhost:~> echo $FUNCVAR
localhost:~> which functest
functest not found
zsh: exit 1
localhost:~> . /etc/profile.d/functest.sh
localhost:~> which functest              
functest () {
	echo function functest defined

What happens here is that some applications install their initialization scripts under /etc/profile.d and those get sourced via /etc/profile when a user logins (and /etc/profile is sourced by /etc/zprofile). With console sessions or ssh connections all is good.

When a user is logging via a display manager like GDM, the function definitions get "lost" as only zshenv/.zshenv/zshrc/.zshrc are getting sourced when an xterm / gnome-terminal is launched. zprofile/.zprofile are sourced during the login but only environment variable setting survive till xterm/gnome-terminal.

So the question is what would be the most optimal way to fix this? Some distributions' zsh package (e.g., Red Hat's) actually source init scripts under /etc/profile.d *twice* but that raises new problems as then a user will have hard time to override some settings in his own init scripts (and it just feel broken to do something like that twice in any case).


Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 

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