从Java程序运行Shell脚本而不是拾取环境变量

时间:2014-07-18 14:25:43

标签: java linux bash shell unix

我有一个执行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程序执行什么必须要做的事情来完全模拟脚本?

0 个答案:

没有答案