我在O(1)
的Linux shell中定义环境变量。现在,我想编写一个小程序来读取环境变量,将其写入控制台输出,并将该变量写入属性文件。但是,当我尝试使用此代码时,TestEnviron=varproperty
会返回getenv()
:
null
我在shell中使用它来调用jar: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) {
}
}
}
答案 0 :(得分:4)
您应该使用sudo -E
AND export
来保存环境变量:
$ export TestEnviron=varproperty
$ sudo -E java -jar JavaEnvironmentVariable.jar
但是为了更安全,您应该按照以下文章中的说明配置sudo以保留您的变量:How to keep Environment Variables when Using SUDO:
sudo visudo
并添加以下行:
Defaults env_keep += "TestEnviron"
答案 1 :(得分:2)
Shell不会自动将变量放入环境中。您需要使用fb:explicitly_shared=true
或export ENVVAR=VALUE
显式导出变量,具体取决于您的shell。
答案 2 :(得分:0)
我认为你是在一个shell中设置环境变量并在另一个shell中执行你的程序。尝试在同一个shell中执行它们。在通过在shell中打印环境变量来执行程序检查之前。