Environment Variables in Logo

Our first example will demonstrate how to work with environment variables. Environment variables are a universal mechanism for conveying configuration information to Unix programs. Let’s look at how to set, get, and list environment variables in Java.

import java.util.Map;

public class EnvironmentVariables {
    public static void main(String[] args) {
        // To set a key/value pair, use System.setProperty
        // To get a value for a key, use System.getenv
        // System.getenv will return null if the key isn't present in the environment
        System.setProperty("FOO", "1");
        System.out.println("FOO: " + System.getenv("FOO"));
        System.out.println("BAR: " + System.getenv("BAR"));

        // Use System.getenv() to get all environment variables
        // This returns a Map<String, String> of all key/value pairs
        // Here we print all the keys
        System.out.println();
        Map<String, String> env = System.getenv();
        for (String key : env.keySet()) {
            System.out.println(key);
        }
    }
}

Running the program shows that we don’t pick up the value for FOO that we set in the program using System.setProperty, because System.setProperty sets a system property, not an environment variable. BAR is null because it’s not set in the environment.

$ java EnvironmentVariables
FOO: null
BAR: null

PATH
JAVA_HOME
USER
...

The list of keys in the environment will depend on your particular machine.

If we set BAR in the environment first, the running program picks that value up.

$ export BAR=2
$ java EnvironmentVariables
FOO: null
BAR: 2
...

Note that in Java, unlike in some other languages, you can’t modify the environment variables of the current process after it has started. The System.setProperty method sets a Java system property, which is different from an environment variable. If you need to set environment variables, you typically do so before starting the Java process.