我通过以下代码使用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”但不起作用。
是否有其他环境变量或方法来执行此任务?
答案 0 :(得分:0)
在Linux上运行shell文件的命令是固定的 - 它总是/bin/sh
。所以你会这样做:
var shell = new FileUtils.File("/bin/sh");
var args = ["-c", "record.sh"];
这不是一个正确的方法 - 如果你想要绝对正确地做,你会查看脚本文件并解析第一行(通常是something like #!/bin/sh
)。在一般情况下,您不会检查文件扩展名,而是检查文件是否可执行(在类Unix系统上,这完全独立于文件扩展名)。但我想你对一般情况不是很感兴趣。