I want to set environment using shell scrip in Ubuntu 10.04 and want to access in java program. I have wrote shell script like this:
#! /bin/sh
export JAVA=/home/ubuntu
echo "Variable $JAVA"
and my java program is :
import java.util.Map;
public class SystemEnv
{
public static void main(String[] args)
{
Map<String, String> variables = System.getenv();
for (Map.Entry<String, String> entry : variables.entrySet())
{
String name = entry.getKey();
String value = entry.getValue();
System.out.println(name + "=" + value);
}
System.out.println(System.getenv(("JAVA")));
}
}
When I execute this command without shell script it works well, but in shell script it does not.
How are you sourcing the script?
or
The second will set the environment variable to current shell. The java program looks ok.
EDIT: based on the comment
It was a problem related to subshell. A quick read is
What is the difference between executing a bash script and sourcing a bash script?
What are you trying to do exactly?
Running
JAVA=/home/ubuntu java SystemEnv
works fine (i.e. it outputs "/home/ubuntu")If you want to export environment variables to the parent process, you have to source it: