首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在shell脚本中设置环境变量和在Java程序中访问

在shell脚本中设置环境变量和在Java程序中访问
EN

Stack Overflow用户
提问于 2017-11-14 08:21:41
回答 1查看 2K关注 0票数 2

这个问题是对Set environment variable in shell script/access in Java program的跟进。运行shell脚本后,我试图在Java中获取环境变量,但无法这样做

Shell脚本: getDetails.sh:

代码语言:javascript
复制
#!/bin/bash
# File: getDetails.sh
export userDetails="USER123"
# echo "User Details for App :$userDetails"

Java方法:

代码语言:javascript
复制
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,因为程序/组织不允许重复详细信息。

EN

回答 1

Stack Overflow用户

发布于 2017-11-14 08:29:43

bash进程导出环境变量并不使其成为“全局”变量,这意味着它被继承(复制)到子进程。也就是说,由导出它的bash进程运行的进程。

在这里,Java是父进程,并且没有从子进程将变量注入父进程的(合法)方法。在运行Java之前,必须设置和导出变量。

我建议使用一个“包装器”bash脚本,它首先导出变量,然后运行Java应用程序。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47280812

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档