我想读取/转储从 java 内部启动的进程(.sh 文件、命令行调用等)的环境变量。
例如,我有一个运行并设置环境变量的 shell 脚本:
#!/bin/bash
export blah='really boring'
我从父 java 程序调用该 shell 脚本,但在 shell 脚本退出之前,我想从其环境中提取 $blah 的值。除了返回代码和 stdout/stderr 流之外,这将允许我将信息传回给调用的 java 程序。
我想我可以将 env 转储到一个文件中,然后再读取该文件,但我需要专门修改脚本来做到这一点,涉及文件系统,这似乎很麻烦。
通过阅读 POSIX exit 的各种文档,我可以在进程上放置 on_exit 钩子,但我想知道是否有办法使用相当纯的 java 来做到这一点。JNR 可以帮忙吗?
任何其他想法都会很棒,跨平台越多越好,例如将调用的命令/shell 包装在更多 UNIXy 的优点或除标准 groovy/java 进程启动库之外的其他库中。