我想读取/转储我从java内部启动的进程(.sh文件,命令行调用等)的环境变量。
例如,我有一个运行并设置环境变量的shell脚本:
#!/bin/bash
export blah='really boring'
我从父java程序调用该shell脚本,但在shell脚本退出之前,我想从其环境中提取$ blah的值。除了返回代码和stdout / stderr流之外,这将允许我将信息传递回调用的java程序。
我想我可以将env转储到一个文件然后再读取该文件,但是我需要专门修改脚本来执行此操作,涉及文件系统,这看起来很麻烦。
从阅读POSIX出口的各种文档,我可以在进程上放置on_exit钩子,但我想知道是否有办法使用相当纯的java来做到这一点。 JNR能帮忙吗?
任何其他想法都会很棒,跨平台越多越好,例如将命令/ shell包装在更多UNIXy良好或其他库中,除了标准的groovy / java进程启动库之外。
答案 0 :(得分:1)
您可以让脚本更长一些时间来转储环境变量。
runtime.exec("bash", "-c", ". your-script.sh ; export > export.dump");