如何在Windows上运行linux终端命令?

时间:2017-02-16 21:50:21

标签: node.js linux windows electron child-process

我不知道该怎么问,但我想在Windows 10上运行'bash'命令,以便稍后运行一些linux命令。我正在使用Electron和Child Process框架。

var os = require('os')
var exec = require('child_process').exec
if (os.platform() =='win32'){
    var cmd_win = 'bash'
    exec(cmd_win, function(error, stdout, stderr){
        console.log(error)
    });
}

代码段给出“错误:命令失败:bash”。有谁知道为什么?你能帮帮我吗?我希望你理解我的问题。

4 个答案:

答案 0 :(得分:1)

要初始化WSL子系统,您必须在后台启动(隐藏的)Bash 控制台窗口 ,如果您执行bash.exe这不起作用直接 - 它既不适用于exec也不适用execFile

诀窍是让Node.js生成的shell(cmd)进程无法阻止启动bash.exe ,遗憾的是,这不容易做到:start无法使用,因为bash.exe控制台应用程序,因此start同步

解决方案是创建一个辅助。启动bash.exe的VBScript文件,它本身可以通过wscript.exe异步调用。请注意,Bash控制台窗口已启动隐藏

var os = require('os')
var exec = require('child_process').exec
if (os.platform() === 'win32') {
  var cmd_win = '\
    echo  WScript.CreateObject("Shell.Application").\
      ShellExecute "bash", "", "", "open", 0 > %temp%\launchBashHidden.vbs \
    & wscript %temp%\launchBashHidden.vbs'
  exec(cmd_win, function(error, stdout, stderr){
      if (error) console.error(error)
  });
}

注意辅助。 VBScript文件%temp%\launchBashHidden.vbs在调用之间徘徊。每次运行后清理它需要更多的工作(你不能马上删除它,因为wscript,由于异步运行,可能还没有加载它。)

答案 1 :(得分:-1)

默认情况下,exec将使用cmd.exe在Windows中执行命令。您可能正在寻找的是the docs中指定的shell选项。

  

shell用shell执行命令(UNIX上的默认:'/ bin / sh',Windows上的'cmd.exe',shell应该了解UNIX上的-c开关或/ s / c on Windows。在Windows上,命令行解析应与cmd.exe兼容。)

const os = require('os')
const exec = require('child_process').exec

if (os.platform() === 'win32') {
  exec('ls', {shell: 'path/to/executable.exe'}, (err, stdout, stderr) => {
    if (err) {
      console.error(err)
      return
    }

    console.log(stdout)
  })
}

答案 2 :(得分:-1)

我找到了一种简单的方法:

  • 在计算机上安装git
  • C:\Program Files\Git\usr\bin添加到您的路径变量。
    并检查是否可以在cmd中运行linux命令。

答案 3 :(得分:-2)

您可以通过使用WSL或虚拟机来使用Linux终端。您应该访问https://docs.microsoft.com/en-us/windows/wsl/install-win10来了解如何使用WSL安装Linux终端。或从下载虚拟化文件 https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/https://developer.microsoft.com/en-us/windows/downloads/virtual-machines/并使用Vmware,VirtualBox或Qemu启动它们。 最后一种方法是为Windows安装git。您可以从这里https://git-scm.com/download/win

下载它