如何从Java调用linux命令“source FILE_NAME”?

时间:2013-04-01 13:16:04

标签: java linux

实际上我有两个命令:

  1. 来源FILE_NAME
  2. 安装ABCD
  3. 在执行第二个命令之前,我需要执行第一个命令。我绑定使用Runtime.getRuntime().exec(cmd)方法执行两个命令,但第二个命令失败,因为它取决于第一个命令。我尝试了很多组合,但没有成功。有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:1)

您可能正在执行两个单独的exec命令,产生单独的进程,因此第一个进程中的任何操作都不会显示在第二个进程中。通过将所有命令放入脚本(bash,ksh等)并从Java程序中调用一次来解决此问题。

参数化您的脚本,以便传递参数。

以下是writing your first shell script

的一些帮助

[编辑] 正如@RNJ所提到的,您可以查看使用ProcessBuilder将环境变量传递给每个生成的进程。如果您可以提前指定正在创建的文件的名称,那么这将没有问题。从上面的API链接获取的示例代码...

 ProcessBuilder pb = new ProcessBuilder("myCommand", "myArg1", "myArg2");
 Map<String, String> env = pb.environment();
 env.put("VAR1", "myValue");
 env.remove("OTHERVAR");
 env.put("VAR2", env.get("VAR1") + "suffix");
 pb.directory(new File("myDir"));
 Process p = pb.start();