这个问题是对Set environment variable in shell script/access in Java program的跟进。运行shell脚本后,我试图在Java中获取环境变量,但无法这样做
Shell脚本: getDetails.sh:
#!/bin/bash
# File: getDetails.sh
export userDetails="USER123"
# echo "User Details for App :$userDetails"Java方法:
String details = new String("source " + "getDetails.sh");
ProcessBuilder processBuilder = new ProcessBuilder("/bin/bash", "-c", details);
Process getPwdProc = processBuilder.start();
System.out.println("Details - " + processBuilder.environment().get("userDetails"));java方法为环境变量- userDetails返回/打印null。
请注意,这里不允许使用InputStream/BufferedReader读取userDetails,因为程序/组织不允许重复详细信息。
发布于 2017-11-14 08:29:43
从bash进程导出环境变量并不使其成为“全局”变量,这意味着它被继承(复制)到子进程。也就是说,由导出它的bash进程运行的进程。
在这里,Java是父进程,并且没有从子进程将变量注入父进程的(合法)方法。在运行Java之前,必须设置和导出变量。
我建议使用一个“包装器”bash脚本,它首先导出变量,然后运行Java应用程序。
https://stackoverflow.com/questions/47280812
复制相似问题