Under RedHat 6.2, the tcsh shell uses two system-wide initialization
scripts, namely /etc/csh.login and /etc/csh.cshrc. The former is
executed once for a 'login' shell and the latter is executed for
every shell invocation.
Until very recently, the system-wide file *always* ran the appropriate
scripts in /etc/profile.d for *every* shell but this behaviour was changed.
Now only the 'login' shell processes /etc/profile.d .
I believe it is important to restore the old default behaviour;
1) The purpose of profile.d is to alter the environment of *every* shell.
It is a very useful feature as one can easily drop in scripts
and not have to worry about subsequent upgrades. The environment
can include *aliases* as well as environment variables which are
obviously not inherited from invoking shells.
2) The notion of a 'login' shell does not apply in an X11 environment
so one does not get consistent behaviour between console shells,
remote logins and xterm shells.
All one needs to do is move the profile.d loop back from csh.login
to csh.cshrc. Please !
This has been done as of the latest setup packages in rawhide.