I believe this had been fixed is /bin/ksh93 the most recent? I ran this with the latest this output from linux, but sol8.sun4 worked too --- (p) /usr/bin/locale LANG= LC_CTYPE="POSIX" LC_NUMERIC="POSIX" LC_TIME="POSIX" LC_COLLATE="POSIX" LC_MONETARY="POSIX" LC_MESSAGES="POSIX" LC_PAPER="POSIX" LC_NAME="POSIX" LC_ADDRESS="POSIX" LC_TELEPHONE="POSIX" LC_MEASUREMENT="POSIX" LC_IDENTIFICATION="POSIX" LC_ALL= (p) (export LC_ALL=en_US; /usr/bin/locale) LANG= LC_CTYPE="en_US" LC_NUMERIC="en_US" LC_TIME="en_US" LC_COLLATE="en_US" LC_MONETARY="en_US" LC_MESSAGES="en_US" LC_PAPER="en_US" LC_NAME="en_US" LC_ADDRESS="en_US" LC_TELEPHONE="en_US" LC_MEASUREMENT="en_US" LC_IDENTIFICATION="en_US" LC_ALL=en_US (p) /usr/bin/locale LANG= LC_CTYPE="POSIX" LC_NUMERIC="POSIX" LC_TIME="POSIX" LC_COLLATE="POSIX" LC_MONETARY="POSIX" LC_MESSAGES="POSIX" LC_PAPER="POSIX" LC_NAME="POSIX" LC_ADDRESS="POSIX" LC_TELEPHONE="POSIX" LC_MEASUREMENT="POSIX" LC_IDENTIFICATION="POSIX" LC_ALL= ---
On Thu, 19 Apr 2007 18:51:44 +0200 Roland Mainz wrote: > During testing I found a small glich if a script or user switches the > locale in a subshell. > Example: > -- snip -- > $ set | /usr/xpg4/bin/egrep "LC_|LANG" > LANG=en_US.UTF-8 > LC_COLLATE=en_US.UTF-8 > LC_CTYPE=en_US.UTF-8 > LC_MESSAGES=en_US.UTF-8 > LC_MONETARY=en_US.UTF-8 > LC_NUMERIC=en_US.UTF-8 > $ (export LC_ALL=ja_JP.UTF-8 ; man ls) > # view manual page in japanese > $ foo > /bin/ksh93: foo: not found [<japanese characters here>] > -- snip -- > It seems the subshell sets LC_ALL to "ja_JP.UTF-8" but when the subshell > exists |setlocale()| is not called again to restore the values. Forcing > an internal call to |fork()| for a subshell for example using the $ > ulimit # builtin works around the problem. > Example: > -- snip -- > $ set | /usr/xpg4/bin/egrep "LC_|LANG" > LANG=en_US.UTF-8 > LC_COLLATE=en_US.UTF-8 > LC_CTYPE=en_US.UTF-8 > LC_MESSAGES=en_US.UTF-8 > LC_MONETARY=en_US.UTF-8 > LC_NUMERIC=en_US.UTF-8 > # call ulimit to make sure the subshell runs in a |fork()|'ed child > process > $ (ulimit -c 0 ; export LC_ALL=ja_JP.UTF-8 ; man ls) > # view manual page in japanese > $ foo > /bin/ksh93: foo: not found [No such file or directory] > -- snip -- > ---- > Bye, > Roland > -- > __ . . __ > (o.\ \/ /.o) roland.mainz at nrubsig.org > \__\/\/__/ MPEG specialist, C&&JAVA&&Sun&&Unix programmer > /O /==\ O\ TEL +49 641 7950090 > (;O/ \/ \O;)