RE: locale environment variables

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



for me, setting LC_ALL and exporting it seems to do the trick to set all the LC_* variables in the locale and have it inherited when a new shell is spawned.  It should work if you set and export them at the end of your .profile.

This is fedora 12 but I will verify at work tomorrow that this still holds on RHEL5:

[matt@fedora ~]$ locale 
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=en_US.UTF-8

## set the shell variable ##
[matt@fedora ~]$ LANG=zu_ZA.iso88591 
[matt@fedora ~]$ locale
LANG=zu_ZA.iso88591
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=en_US.UTF-8
[matt@fedora ~]$ export LANG
[matt@fedora ~]$ locale
LANG=zu_ZA.iso88591
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=en_US.UTF-8
[matt@fedora ~]$ LC_ALL=zu_ZA.iso88591
[matt@fedora ~]$ export LC_ALL
[matt@fedora ~]$ locale
LANG=zu_ZA.iso88591
LC_CTYPE="zu_ZA.iso88591"
LC_NUMERIC="zu_ZA.iso88591"
LC_TIME="zu_ZA.iso88591"
LC_COLLATE="zu_ZA.iso88591"
LC_MONETARY="zu_ZA.iso88591"
LC_MESSAGES="zu_ZA.iso88591"
LC_PAPER="zu_ZA.iso88591"
LC_NAME="zu_ZA.iso88591"
LC_ADDRESS="zu_ZA.iso88591"
LC_TELEPHONE="zu_ZA.iso88591"
LC_MEASUREMENT="zu_ZA.iso88591"
LC_IDENTIFICATION="zu_ZA.iso88591"
LC_ALL=zu_ZA.iso88591
[matt@fedora ~]$ bash
[matt@fedora ~]$ locale
LANG=zu_ZA.iso88591
LC_CTYPE="zu_ZA.iso88591"
LC_NUMERIC="zu_ZA.iso88591"
LC_TIME="zu_ZA.iso88591"
LC_COLLATE="zu_ZA.iso88591"
LC_MONETARY="zu_ZA.iso88591"
LC_MESSAGES="zu_ZA.iso88591"
LC_PAPER="zu_ZA.iso88591"
LC_NAME="zu_ZA.iso88591"
LC_ADDRESS="zu_ZA.iso88591"
LC_TELEPHONE="zu_ZA.iso88591"
LC_MEASUREMENT="zu_ZA.iso88591"
LC_IDENTIFICATION="zu_ZA.iso88591"
LC_ALL=zu_ZA.iso88591
[matt@fedora ~]$ printenv LC_ALL
zu_ZA.iso88591
[matt@fedora ~]$ printenv LANG
zu_ZA.iso88591
[matt@fedora ~]$ 


________________________________________
From: redhat-list-bounces@xxxxxxxxxx [redhat-list-bounces@xxxxxxxxxx] On Behalf Of hook [ls@xxxxxxxxxxxx]
Sent: Saturday, November 21, 2009 2:27 PM
To: redhat-list@xxxxxxxxxx
Subject: locale environment variables

I could use some help in understanding the process which RHEL systems
apply to the locale environment variables (specifically LANG and
LC_ALL).  It seems that from /etc/profile.d/lang.sh, LC_ALL is unset
unless it was already initialized to something other than the value of LANG.


     if [ -n "$LC_ALL" ]; then
        if [ "$LC_ALL" != "$LANG" ]; then
          export LC_ALL
        else
          unset LC_ALL
        fi
     else
        unset LC_ALL
     fi



I seem to have an application that requires these two variables to be
set to the same value, so instead of modifying the system wide profile
config, I decided to add the following to ~/.bash_profile since this app
runs under only one account:

    if [ "$LC_ALL" != "$LANG" ]; then
        LC_ALL=$LANG
        export LC_ALL
    fi


The problem I have now is that this app generates it own job submission
which basically runs a script that dynamically generates another script
for execution later.  I'm not a developer so I don't understand the
entire process, but without exporting these two variables inside the
first script, the LC_ALL variable is still being unset by the system
wide profile.  I don't know if this illustrates the same issue, but when
I establish an initial SSH session, I see the values set for both
variables as desired, however if I simply kick off another bash shell,
the LC_ALL is unset again.

$ locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=en_US.UTF-8
$ bash
$ locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=



Any explanation of why this is occurring or advise on how to change the
behavior would be appreciated.


Thanks,
Hook

--
redhat-list mailing list
unsubscribe mailto:redhat-list-request@xxxxxxxxxx?subject=unsubscribe
https://www.redhat.com/mailman/listinfo/redhat-list

-- 
redhat-list mailing list
unsubscribe mailto:redhat-list-request@xxxxxxxxxx?subject=unsubscribe
https://www.redhat.com/mailman/listinfo/redhat-list

[Index of Archives]     [CentOS]     [Kernel Development]     [PAM]     [Fedora Users]     [Red Hat Development]     [Big List of Linux Books]     [Linux Admin]     [Gimp]     [Asterisk PBX]     [Yosemite News]     [Red Hat Crash Utility]


  Powered by Linux