On Sat, Jun 25, 2011 at 11:57 PM, Tom Gundersen <[email protected]> wrote: > On Sat, Jun 25, 2011 at 11:40 PM, Kurt J. Bosch > <[email protected]> wrote: >> Dave Reisner, 2011-06-25 20:00: >>> >>> On Sat, Jun 25, 2011 at 12:16:03PM +0200, Kurt J. Bosch wrote: >>>> >>>> --- >>>> functions | 4 +--- >>>> 1 files changed, 1 insertions(+), 3 deletions(-) >>>> >>>> diff --git a/functions b/functions >>>> index 86b9602..2e4ba42 100644 >>>> --- a/functions >>>> +++ b/functions >>>> @@ -62,9 +62,7 @@ unset TERM_COLORS >>>> unset TZ >>>> >>>> # sanitize the locale settins >>>> -unset LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY \ >>>> - LC_MESSAGES LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE \ >>>> - LC_MEASUREMENT LC_IDENTIFICATION LC_ALL >>>> +unset "${!LC_@}" >>>> if [[ $DAEMON_LOCALE = [yY][eE][sS]&& $LOCALE ]]; then >>>> export LANG="${LOCALE}" >>>> else >>>> -- >>>> 1.7.1 >>>> >>> >>> I'm all for simplifying things, but this will unset _anything_ starting >>> with LC_ which could conceivably be something a calling script cares >>> about. >>> >>> dave >> >> NACK i agree with dave. We should just remove what we want or doing what tom propose (cleaning all and add what we want).
>> We talk about rc scripts and daemons here don't we? >> At the point where functions are sourced they should not care about anything >> else than what is normally exported by init or supported in rc.conf. Ideally >> we should unset _everything_ other to avoid unexpected daemon restart >> behavior. Things special to a daemon script should go into >> /etc/conf.d/$daemon which is sourced after functions. As far i know, there is no obligation that conf.d/ scripts is bash script. > I think it would be best if we were able to unset all variables except > for the ones we explicitly want. init already clean all vars (excep those in man) when runnint rc.* rc.d clean the env like init do it. It's one of the avantage of using rc.d. But this should be done in functions... > > I have been meaning to look into using /etc/initscript to set/unset > system-wide variables, but I haven't had the time to check if this > really works the way I want. > > If I understand correctly, the variables exported in /etc/initscript > will be inherited by all processes on the system, (unless a child > unsets them of course). This would allow us to put the LC_* and PATH > in there (rather than in /etc/profile and /etc/profile.d/locale.sh), > and things should JustWork(TM). yeah, this probably help with our locales inheritance issue ! > > At the moment it looks like agetty is clearing some (if not all) the > env var's it is passed, but I have not yet found out exactly how it > works. > > -t > -- Sébastien Luttringer www.seblu.net
