Setting a locale globally

Teske, Devin Devin.Teske at fisglobal.com
Fri Jun 14 21:23:01 UTC 2013


On Jun 14, 2013, at 1:51 PM, Polytropon wrote:

> 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.
> 

Also, you can get the sudo(8) utility to preserve LANG by adding it to the env_keep list in /usr/local/etc/sudoers

For example:

Step 1: (as root) visudo

Step 2: Find… (the default configuration)

## Locale settings
# Defaults env_keep += "LANG LANGUAGE LINGUAS LC_* _XKB_CHARSET"

Step 3: Un-comment the second line (of the two lines shown above).

Now whenever you use sudo(8) to execute a command, LANG (and a few others, like LC_ALL) are preserved.
-- 
Devin

_____________
The information contained in this message is proprietary and/or confidential. If you are not the intended recipient, please: (i) delete the message and all copies; (ii) do not disclose, distribute or use the message in any manner; and (iii) notify the sender immediately. In addition, please be aware that any message addressed to our domain is subject to archiving and review by persons other than the intended recipient. Thank you.


More information about the freebsd-questions mailing list