【问题标题】:Execute source command from Java从 Java 执行源命令
【发布时间】:2013-08-25 09:08:36
【问题描述】:

我有一个 bash 脚本文件,我在 shell 中使用 source 命令调用它并设置了许多环境变量。然后我可以使用环境变量设置的所有工具。

现在我想在 Java 中做同样的事情,方法是:

static Runtime run = Runtime.getRuntime();
Process pr = run.exec(command);
pr.waitFor();

我知道 source 是一个内部命令,我不能从 Java 中调用它。

有没有其他方法可以从 java 中设置该文件中的环境变量,以便以后能够在我的代码中使用它们来调用其他命令?

提前谢谢你!

【问题讨论】:

    标签: java linux bash shell environment-variables


    【解决方案1】:
    Process pr = new ProcessBuilder("/bin/bash", "-c", ". env.sh; " + command).start();
    

    试试这样的方法,你既可以获取脚本,又可以在同一个 shell 进程中执行后续命令。每次你想执行一个命令时,你都会有效地获取脚本。

    【讨论】:

    • 抱歉,我是新手。那么在创建流程 pr 之后,我如何使用我的运行时执行它?
    • @Kyriakos 在上面的示例中,由于末尾的 .start() ,它正在执行。您可以像这样之前创建 processbuilder: Processbuilder pb = new ProcessBuilder("/bin/bash", "-c", ".env.sh; " + command);然后执行它: Process p= pb.start();
    • 我做了这样的事情:String sourcePath [] = {"/bin/bash", "-c", xmosSetEnvCmd + ";" + xcoreCompileCmd};然后 pr =run.exec(sourcePath);然后 pr.waitFor();我认为是一样的!非常感谢 Miterion!它的工作
    • @Kyriakos ProcessBuilder is preferable to Runtime.exec(),国际海事组织。它有更好的API,Runtime.exec()实际上是在幕后使用ProcessBuilder实现的。
    • 那个约翰有原因吗?
    猜你喜欢
    • 1970-01-01
    • 2012-06-23
    • 2017-10-07
    • 2011-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多