Setting a locale globally

Polytropon freebsd at edvax.de
Fri Jun 14 20:50:59 UTC 2013


On Fri, 14 Jun 2013 15:54:06 -0400, Mike. wrote:
> On 6/14/2013 at 9:12 PM Polytropon wrote:
> 
> |On Fri, 14 Jun 2013 12:13:34 -0400, Mike. wrote:
> |> I would like to set the locale of my 9.1 server to
> |> 
> |>    LANG="en_US.ISO8859-1"
> |> 
> |> 
> |> globally, i.e., put the locale entry in one file, and then have the
> |> locale propagate as I go into other shells and run various scripts.
> |
> |You can add this to /etc/csh.cshrc as it will be inherited by
> |all interactive shells (login shells), unless of course they
> |override it with ~/.cshrc:
> |
> |	setenv LANG en_US.ISO8859-1
> 
> That works for the login shell, but when I su to another user (e.g.,
> root), LANG is no longer in the environment.

That depends on _how_ you su. For example, if you use su -m,
the environment will not be modified, but the UID 0 is gained.
See "man su" for details.

But you are correct in terms of what I mentioned: If some
user-configuration changes or unsets $LANG, it will be gone,
and it may even be possible that the setting will not be
transmitted properly to a different shell ("inheriting
environment"), especially if the shell is not the default
login shell, but instead bash or zsh (when the setting is
being made for csh only).



> |It's also possible to add it to /etc/profile and even make an
> |addition to /etc/login.conf's "default" setting:
> |
> |	default:\
> |		:setenv=LANG=en_US.ISO8859-1:...
> 
> That works for the login shell, but when I su to another user (e.g.,
> root), LANG is no longer in the environment.

Try su -m. 

Anyway, login.conf should be the better solution compared
to the csh approach illustrated above. It should work
independently from the kind of shell.



-- 
Polytropon
Magdeburg, Germany
Happy FreeBSD user since 4.0
Andra moi ennepe, Mousa, ...


More information about the freebsd-questions mailing list