Java getenv()返回null

时间:2015-09-13 09:51:30

标签: java linux shell null getenv

我在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) { } } }

3 个答案:

答案 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中打印环境变量来执行程序检查之前。