Bug 116316

Summary: X sets LC_ALL=POSIX
Product: [openSUSE] SUSE LINUX 10.0 Reporter: Jan Engelhardt <jengelh>
Component: X.OrgAssignee: Stefan Dirsch <sndirsch>
Status: VERIFIED WORKSFORME QA Contact: Stefan Dirsch <sndirsch>
Severity: Normal    
Priority: P2 - High    
Version: RC 1   
Target Milestone: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Found By: Beta-Customer Services Priority:
Business Priority: Blocker: ---
Marketing QA Status: --- IT Deployment: ---

Description Jan Engelhardt 2005-09-10 10:01:52 UTC
After updating to RC1, I found that X sets LC_ALL=POSIX. So xterms start in    
                                                                        
"iso-8859-1" mode by default. That's not what it was before and it not what I
want either. (Beta2 is what I had before.)
Comment 1 Jan Engelhardt 2005-09-10 10:02:54 UTC
When I log into a vc (e.g. tty1) `locale` gives the proper values. I start X
using `startx -- -dpi 96`. Since environment is inherited to xterms, it must be
somewhere along the X startup files, functions, etc.
Comment 2 Stefan Dirsch 2005-09-10 10:40:10 UTC
Please add the output of "locale" before and after starting X. Which terminal  
and windowmanager are you using? 
Comment 3 Jan Engelhardt 2005-09-10 10:59:01 UTC
If I start a totally bare X on console:

X :1 vt8 &
DISPLAY=:1 xterm &

Calling `locale` in that yellowish xterm outputs the proper locales. Starting an
icewm within this yellow xterm and starting an xterm from this icewm also has
proper locales. So I guess it must be Xstartup or so.

Since at some point, something sets the environment, I looked through the env of
some processes. This is `ps xaf` of the normal (:0) X server started using startx:

 4616 tty1     S      0:00 /bin/sh /usr/X11R6/bin/startx -- -dpi 96
 4643 tty1     S      0:00  \_ xinit /home/jengelh/.xinitrc -- /usr/X11R6/bin/X
 4644 tty7     RLs+   3:00      \_ /usr/X11R6/bin/X :0 -dpi 96 -auth /home/jenge
 4659 tty1     S      0:00      \_ /usr/X11R6/bin/icewm-session
 4666 ?        SNs    0:00          \_ icewmbg
 4667 ?        Ss     0:01          \_ icewm
 4680 ?        Ss     0:00          |   \_ xterm -ls -fg gray -bg #001020 -geome
 4682 pts/1    Ss     0:00          |   |   \_ -bash
 4846 pts/1    S      0:00          |   |       \_ /bin/bash --login
 4901 ?        Ss     0:00          |   \_ /bin/sh /usr/bin/firefox
 4913 ?        Sl     5:46          |   |   \_ /opt/MozillaFirefox/lib/firefox-b
 5218 ?        Ss     0:00          |   \_ xterm -ls -fg gray -bg #001020 -geome
 5219 pts/2    Ss     0:00          |       \_ /bin/bash --login
 5575 pts/2    R+     0:00          |           \_ ps xaf
 4668 ?        Ss     0:00          \_ icewmtray

12:59 shanghai:/etc/init.d # cat /proc/4616/environ | perl -pe
's/\x00/\n/gs'|grep LC_ALL
LC_ALL=POSIX
13:00 shanghai:/etc/init.d # 

So it's right in startx or the files it sources.
Comment 4 Stefan Dirsch 2005-09-10 11:54:14 UTC
> So it's right in startx or the files it sources.  
 
Probably. It might be your ~/.xinitrc. Please rename it and retest. So the 
global one (/usr/X11R6/lib/X11/xinit/xinitrc) is used instead. 
Comment 5 Jan Engelhardt 2005-09-11 07:58:22 UTC
If I put this in ~/.xinitrc:

echo LC_ALL is $LC_ALL
exit 1

then startx will print me "LC_ALL is POSIX". So it's not my xinitrc.
Comment 6 Stefan Dirsch 2005-09-11 10:41:56 UTC
I'll try to reproduce. 
Comment 7 Stefan Dirsch 2005-09-11 15:09:43 UTC
I can't. I made a fresh installation with a fresh user. In console login the
locale is set to "de_DE.UTF8". After using startx (windowmanager: twm) the
locale in xterm is still set to "de_DE.UTF-8".
Comment 8 Jan Engelhardt 2005-09-11 20:01:20 UTC
Guess what. My personal scripts (not .xinitrc but something more toplevel)
sourced /etc/rc.status for getting the colorful $rc_done -- which actually set
LC_ALL=POSIX throughout all procs, including startx. Comments about rc.status
having that POSIX thingie?
Comment 9 Stefan Dirsch 2005-09-11 21:14:48 UTC
/etc/rc.status is sourced by init scripts. This is probably the reason to set 
LC_ALL to POSIX.