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;)


Reply via email to