从 JavaScript 打开终端并运行 bash 命令 Linux

Posted

技术标签:

【中文标题】从 JavaScript 打开终端并运行 bash 命令 Linux【英文标题】:Open terminal from JavaScript and run bash command Linux 【发布时间】:2021-08-20 06:42:44 【问题描述】:

我正在尝试运行一个 bash 文件。 我可以打开终端并编写 bash run.sh ,它工作正常。但我正在尝试通过 javascript 来做到这一点。我正在尝试打开终端并在该终端中运行命令。

let extExecCommand = `bash runtheme.sh`;
childProcess.spawnSync(extExecCommand, shell: true);

run.sh 的内容是这样的

#!/usr/bin/env bash
#This is a comment
 
#defining a variable
export FLASK_APP=script.py
export FLASK_DEBUG=1
flask run
xdg-open http://127.0.0.1:5000/

实际上,我想通过单击网站上的按钮来运行烧瓶应用程序。 目前我正在这样做,它将运行烧瓶应用程序,但我无法杀死子进程。我需要能够通过单击按钮运行此应用程序并且需要能够关闭它。我们可以通过在终端窗口中按 ctrl+c 来实现。那么有什么方法可以从 JavaScript 打开终端窗口并在该窗口中运行“bash run.sh”?

我也尝试让 run.sh 可执行,但它不会自动在窗口中打开地址。

【问题讨论】:

【参考方案1】:

Javascript 是客户端,这意味着您的代码只能在客户端浏览器沙箱上运行。因此,出于明显的安全原因,您不能在客户端机器上执行 shell 命令。你可以在你自己的本地机器上运行它。因此,如果您想这样做,这是我的代码:

const execSync = require('child_process').execSync;
const result = execSync('bash /path/to/executable.sh', encoding: 'utf-8');

console.log(result)

如果你想了解更多关于沙盒的信息,我推荐这篇文章让我更清楚:Sandboxes Explained

【讨论】:

以上是关于从 JavaScript 打开终端并运行 bash 命令 Linux的主要内容,如果未能解决你的问题,请参考以下文章

我如何在与关闭终端相同的工作目录中打开终端?

如何从 bash 脚本中 ssh?

从终端运行 Xcode 无法打开 javascript 脚本(错误:仪器无法打开“TextWrangler 文本文档”格式的文件。”)

如何在git bash终端中打开谷歌浏览器(Windows 10)

wsl2从bash终端调用浏览器打开localhost

bash脚本中右键单击项目(例如jpg)的变量?