我有一个执行shell脚本的java程序。 shell脚本中包含许多环境变量($ HOME)。从shell执行命令时,它工作正常。 echo $ HOME给了我命令的实际路径。 (脚本更改路径并从更改的路径执行命令)
$cat nightly.sh
#!/bin/bash
...
echo $HOME
...
echo "end of script"
我在适当的地方从shell执行时看到/ home /。
现在我从java程序中调用相同的shell脚本,
static Proces p;
...
Runtime instance = Runtime.getRuntime();
p = instance.exec(nightly.sh + " " + branch + " " + stack + " " + profile, null, new File(/home/bmanoj/fps/workspaces/APRIL14REL1/testing/integration-tests/regressions));
现在我将shell的输出捕获到外部文件。当我去看文件“echo $ HOME”导致空行。就此而言,我正在构建基于$ HOME变量的许多相对路径。所以脚本中的任何内容都不适合我。
为什么会那样?为什么java程序调用的实例没有获取环境变量?要在脚本中从java程序执行什么必须要做的事情来完全模拟脚本?