我想读取/转储我从Java内部启动的进程(.sh文件,命令行调用等)的环境变量。
例如,我有一个运行并设置环境变量的shell脚本:
#!/bin/bash
export blah='really boring'
我从父Java程序调用了该Shell脚本,但是在退出Shell脚本之前,我想从其环境中提取$ blah的值。这将使我除了返回代码和stdout / stderr流之外,还可以将信息传递回调用Java程序。
我想我可以将env转储到一个文件中,然后再读取该文件,但是我需要专门修改脚本来做到这一点,包括文件系统,这看起来很麻烦。
通过阅读POSIX exit的各种文档,我可以在进程上放置on_exit挂钩,但是我想知道是否有一种方法可以使用合理的纯Java实现此功能。 JNR可以提供帮助吗?
任何其他想法都很好,跨平台越多越好,例如包装以更多UNIXy优点调用的命令/ shell或除标准groovy / java进程启动库之外的其他库。
最佳答案
您可以使脚本更长一些,以转储环境变量。
runtime.exec("bash", "-c", ". your-script.sh ; export > export.dump");