We had issue with a application which reports process counts in log, application used to log process counts as Integer data type (1500).
One fine morning we started seeing process counts in application log as Decimal (1,500).
Our UNIX admin did investigate and figured-out that change in LANG setting in /etc/environment has caused application to log process counts in log as Decimal instead of Integer and was told that LANG was changed to en_US from C.
Here I am trying to understand why this should cause Integer values in log got changed to Decimal data type.
I would appreciate if anybody can help me to understand.
What happens if you change LANG back to C, assuming it was changed? Does that fix the problem? Is the timestamp consistent with the date of that fine morning when the problem started?
1500 and 1,500 both seem "integer" to me, so I don't understand why you say "decimal" to describe the problem. Aren't those two numbers the same, with the only difference whether a thousands separator is used?
Our UNIX admin did investigate and figured-out that change in LANG setting in /etc/environment has caused application to log process counts in log as Decimal instead of Integer and was told that LANG was changed to en_US from C.
There are many AIX facilities which are represented differently in various cultures. Language (of the man pages, of command status output, ...), how numbers are represented, keyboard layout and many other things. All this is controlled by some environment variables of which "LANG" is one (and probably the most important). Issue the "set" command and you will see "LANG", but probably also "LC_MESSAGES" and a few others.
It is possible to control this "language environment" for every process separately, simply by setting the language variable to a different value upon process start, like this:
Now for the role of "/etc/environment": as you have issued "set" you sure have noticed there are a lot of variables assigned. Most of these variables are not set explicitly by you, but get assigned default values. These system-wide default values are stored in "/etc/environment". Have a look at it, it is a simple text file with declarations in the form
Every time you log in your environment initially gets filled with these defaults. After this your own changes to the environment are being applied and you can change and override any of these defaults. You certainly have a special user for the program you are talking about. If you depend on the LANG variable to have a certain value it is a wise idea to explicitly set it in your startup scripts ("~/.profile") even if it is to the same value as the default. Even if the default changes your environment will remain as it is. I suggest to add a line
to your profile or shell startup script. The "export" keyword will make sure every process started from this process inherits this setting. Btw.: the same is true for other environment settings one of your programs depend on. Set these explicitly, even if it is to the same value the variable already has. When the default changes you avoid possible problems.
There are many AIX facilities which are represented differently in various cultures. Language (of the man pages, of command status output, ...), how numbers are represented, keyboard layout and many other things. All this is controlled by some environment variables of which "LANG" is one (and probably the most important). Issue the "set" command and you will see "LANG", but probably also "LC_MESSAGES" and a few others.
It is possible to control this "language environment" for every process separately, simply by setting the language variable to a different value upon process start, like this:
Now for the role of "/etc/environment": as you have issued "set" you sure have noticed there are a lot of variables assigned. Most of these variables are not set explicitly by you, but get assigned default values. These system-wide default values are stored in "/etc/environment". Have a look at it, it is a simple text file with declarations in the form
Every time you log in your environment initially gets filled with these defaults. After this your own changes to the environment are being applied and you can change and override any of these defaults. You certainly have a special user for the program you are talking about. If you depend on the LANG variable to have a certain value it is a wise idea to explicitly set it in your startup scripts ("~/.profile") even if it is to the same value as the default. Even if the default changes your environment will remain as it is. I suggest to add a line
to your profile or shell startup script. The "export" keyword will make sure every process started from this process inherits this setting. Btw.: the same is true for other environment settings one of your programs depend on. Set these explicitly, even if it is to the same value the variable already has. When the default changes you avoid possible problems.
I hope this helps.
bakunin
Setting LANG=C will do what Aaron Boyce wants only if neither LC_ALL nor LC_NUMERIC is set in the environment. LC_NUMERIC will override LANG for purposes of determining the radix character used and the formatting of numeric output. LC_ALL will override both LANG and LC_NUMERIC.
If LC_NUMERIC is effectively set to a value that sets non-null thousands separators or that uses comma as the radix character, you need to take extra precautions when working with CSV files that contain numeric strings that represent non-integral values, or integral values greater than 999 or less than -999.
Setting LANG=C will do what Aaron Boyce wants only if neither LC_ALL nor LC_NUMERIC is set in the environment. LC_NUMERIC will override LANG for purposes of determining the radix character used and the formatting of numeric output. LC_ALL will override both LANG and LC_NUMERIC.
If LC_NUMERIC is effectively set to a value that sets non-null thousands separators or that uses comma as the radix character, you need to take extra precautions when working with CSV files that contain numeric strings that represent non-integral values, or integral values greater than 999 or less than -999.
You are right, Don, as always. In his entry posting Aaron stated that his SysAdmin has traced back the problem to the changed LANG-entry in /etc/environment, so i took it that none of the applicable LC_-variables are defined in his case, because these would have overridden the old as well as the new setting.
Still, its a good idea to explain the interdependence of LANG and LC_ALL the other LC_-variables.
Hey guys,
I'm setting up a new server(Fujitsu M10-4 / Solaris 10 1/13) to move our app/DB and I'm having trouble figuring out why my LANG setting is not taking effect. I'm trying to set LANG=C in the /etc/default/init file which should make it the default system wide from what I gather. However... (7 Replies)
I wish to setup LAMP environment. Amongst, I have successfully installed Linux 6.1. I am looking fwd to install - Apace Web Server, My Sql Database & PHP environment.
Say if I look for MySql, could see downloadable available in rpm format. But this must be copied over to Linux machine.
As... (2 Replies)
Hi all,
This is my first post here. I need to set up a few environment variables with a shell script. Some are hard-coded, but some should come from other commands or as input from the user. How do I do that?
For example, I need to export a variable as such:
export DISPLAY=127.0.0.1:8.0
... (2 Replies)
#!/bin/bash
if ; then
ASS1_DATA_DIR=./
echo $ASS1_DATA_DIR
export ASS1_DATA_DIR
echo "data dir"
fi
if ; then
ASS1_OUTPUT_DIR=./
export ASS1_OUTPUT_DIR
fi
I want to create a new environment variable ASS1_DATA_DIR and ASS1_OUTPUT_DIR in bash and set them to the current... (4 Replies)
hi all,
I would appreciate if some one could explain me the difference between setting up the variables as shown below
HOME=${HOME:-"/home/user1"}
HOME=/home/user1 (1 Reply)
Hi
I am new to Solaris and was just given my id and need to setup my environment, what do i need to do to run certain commands without putting in the complete path.
How do I create my .profile, I do not see under my login?
Any help would be greatly appreciated. (5 Replies)
Hi,
I already have one CPP program which invokes the C program.And the C program contains whole function definitions..!This is a working program..I have to enable the logs in both CPP as well as in the C program ..!So I am reading the enviornmental variable log path from the CPP and doing the... (2 Replies)
Hi, first post. As the nick suggests I'm a Unix noob, but I'm doing everything I can to learn fast...job requirement. These forums have been a huge help so far.
I have a server running HP-UX 11.23b with Apache/2.0.59 HP-UX_Apache-based_Web_Server.
Apache is not installed in the default... (3 Replies)
Hello
(Very New to UNIX -Solaris 10)
I'm trying to set the LANG variable to C but not sure if it's getting set, need some help on this.
Currently I have it set to en_GB.UTF-8
I need to set it to C for an install. but when I run set LANG=C and then run echo $LANG its still set to... (2 Replies)
Hi all,
I am trying to set up some variables in a shell script. The variables contain values of various paths needed to run a java module. The problem is the variables dont seem to be setting at all.
here is what i am trying to do :
JAR_HOME=/home/was5/bdcms/scheduledjobs/lib
export... (6 Replies)