【发布时间】:2015-12-09 11:39:57
【问题描述】:
我正在使用TestEnviron=varproperty 在 Linux shell 中定义一个环境变量。现在,我想编写一个小程序来读取环境变量,将其写入控制台输出,并将变量写入属性文件。但是,当我尝试使用此代码时,getenv() 返回null:
package javaenvironmentvariable;
import java.io.File;
import java.io.FileOutputStream;
import java.util.Properties;
public class JavaEnvironmentVariable {
public static void main(String[] args) {
try {
String variable = System.getenv("TestEnviron");
System.out.println("TestEnviron: " + variable);
variable = "TestEnviron=" + variable;
Properties properties = new Properties();
File file = new File("Variables.properties");
FileOutputStream fileout = new FileOutputStream(file);
properties.store(fileout, variable);
fileout.close();
} catch (Exception e) {
}
}
}
我在shell中使用这个来调用jar:sudo java -jar JavaEnvironmentVariable.jar
【问题讨论】:
-
你是如何在 shell 中定义你的变量的?您是在定义程序后立即运行程序还是在另一个 shell 中运行程序?你如何启动你的程序?
-
如果你使用另一个shell来启动你的程序,使用
export来定义你的变量:export TestEnviron=varproperty -
@perencia 我在 stell 中使用了 TestEnviron=varproperty,然后我在同一个 shell 中使用这个 sudo java -jar JavaEnvironmentVariable.jar 运行我的程序。
-
@nickbijmoer 如果您在 shell 中执行
env,您会得到变量吗? -
为什么使用
sudo?有关sudo和环境变量的更多信息,请参阅this question。您可以使用sudo -E启动您的程序,以将您的环境保持在 sudo 中。
标签: java linux shell null getenv