The scripts at /etc/profile.d/*
are executed in their own shells rather than sourced so the environment variables they set are not available anyway.What variables do you need? Can you make use of /etc/environment
? Can you write the variables into a file in a var=value
format from the appropriate scripts and source that file in your rc.local
scripts?
This is from the Bash man page. You may find it helpful.
When bash is started non-interactively, to run a shell script, for
example, it looks for the variable BASH_ENV in the environment, expands
its value if it appears there, and uses the expanded value as the name
of a file to read and execute. Bash behaves as if the following com‐
mand were executed:
if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi
but the value of the PATH variable is not used to search for the file
name.
The Bourne shell similarly uses the ENV
variable.