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.