什么环境变量用于在终端中执行命令和.sh文件

时间:2012-05-28 10:51:20

标签: cmd firefox-addon xul xulrunner

我通过以下代码使用XUL在命令提示符中成功执行了命令和.bat文件:

Components.utils.import("resource://gre/modules/FileUtils.jsm");

var env = Components.classes["@mozilla.org/process/environment;1"]
                    .getService(Components.interfaces.nsIEnvironment);
var shell = new FileUtils.File(env.get("COMSPEC"));

var args = ["/c", "cd C:/ffmpeg/bin & record.bat"];

var process = Components.classes["@mozilla.org/process/util;1"]
                        .createInstance(Components.interfaces.nsIProcess);
process.init(shell);
process.runAsync(args, args.length);

但是现在我将.bat文件更改为.sh文件以便为Ubuntu运行并且需要使用相同的代码在终端中运行命令,所以我需要将环境变量“COMSPEC”更改为适用于终端的东西,我发现它是“TERM”但不起作用。

是否有其他环境变量或方法来执行此任务?

1 个答案:

答案 0 :(得分:0)

在Linux上运行shell文件的命令是固定的 - 它总是/bin/sh。所以你会这样做:

var shell = new FileUtils.File("/bin/sh");
var args = ["-c", "record.sh"];

这不是一个正确的方法 - 如果你想要绝对正确地做,你会查看脚本文件并解析第一行(通常是something like #!/bin/sh)。在一般情况下,您不会检查文件扩展名,而是检查文件是否可执行(在类Unix系统上,这完全独立于文件扩展名)。但我想你对一般情况不是很感兴趣。