Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I have generated en_US.utf8, et_EE.iso88591 and ru_RU.utf8 localisation files. Now if I try to change any of the locale variables to a ru_RU.utf8 or en_US.utf8, then this does not have any effect:

# locale -a
# LC_TIME=ru_RU.utf8
# locale | grep LC_TIME
# LC_TIME="ru_RU.utf8"
# locale | grep LC_TIME

However, if I change the LANG= variable, then all other variables but LANGUAGE= and LC_ALL= take the value of the LANG= variable. Is there a way to modify each locale variable separately? In addition, am I correct that locale variables aren't regular shell variables, but more like parameters to locale utility?

share|improve this question
Which distro is this? – slm May 3 '13 at 23:47

Under the Fedora/CentOS/RHEL based distros I believe you can change the locale to one of the locale's displayed when you run the locale -a command in this system file:


For example on my Fedora 14 system:

$ more /etc/sysconfig/i18n 

Under GNOME you can run the help app:


Which brings up this GUI:

             ss of lang. gui

I think it's slightly different for the Debian/Ubuntu distros. I believe it's this file:


I believe they're environment variables but not entirely sure how applications make use of them if at all.


share|improve this answer

You can set any locale category independently. LANG applies only to the categories that are not explicitly set.

LANG and LC_xxx are ordinary environment variables. They are not settings for the locale utility: the locale program isn't involved in any locale processing, it's just a small utility to report current and available locale settings.

When you write LC_TIME=ru_RU.utf8, this doesn't set an environment variable, only a shell variable. Shell variables are internal to the shell, they are not seen by other programs. Environment variables, on the other hand, are inherited by the programs that the shell starts. You need to export the variable to the environment as well:

$ LC_TIME=ru_RU.utf8
$ locale | grep LC_TIME
$ export LC_TIME
$ locale | grep LC_TIME

or directly

$ export LC_TIME=ru_RU.utf8
$ locale | grep LC_TIME
share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.