2012-05-28 63 views
0

我成功执行命令和.bat文件中使用XUL这段代码命令提示符下执行命令和sh文件:什么环境变量用于终端

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

在Linux上运行shell文件的命令是固定的 - 它始终是/bin/sh。所以,你会怎么做:

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

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

+1

你是对的Wladimir ..但如果我直接在终端运行“cd/home/himanshu/ffmpeg && chmod + x record.sh && sudo ./record.sh”命令,那么它运行良好,我需要像“ COMSPEC“可以发生在”env.get('----')“内? – Himanshu

+0

正如我所说的,命令行shell总是'/ bin/sh'。 –