# Jenkins and case sensitive environment variables

Some tools demand environment variables to be present in a certain case. E.g. some libraries read out the proxy configuration in the environment variable `HTTP_PROXY` (all uppercase), while some refer to the lower case variant `http_proxy`. An example of the later is libcurl. So in any case you want to set both variants.

Unfortunately Jenkins has some problems passing all variants from the build host environment and is mixing up things. It doesn’t seem that the problem is fixed anytime soon.

E.g. if you defined on the build host the following in `/etc/environment`:

```lowercase_first=lowercase_first
LOWERCASE_FIRST=LOWERCASE_FIRST
UPPERCASE_FIRST=UPPERCASE_FIRST
uppercase_first=uppercase_first```

The build process will see:

```LOWERCASE_FIRST='lowercase_first'
uppercase_first='UPPERCASE_FIRST'```

So regarding the variable names the last occurence is winning and regarding the values the first occurence is winning.

Its not possible to fix the environment manually in the Jenkinsfile, e.g. the following

```environment {
UPPERCASE_FIRST = "fixed in Jenkinsfile"
}```

will nevertheless result in

`uppercase_first='fixed in Jenkinsfile'`

As a workaround the environment variables can be set manually in the step where they are needed:

```steps {