从 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的主要内容,如果未能解决你的问题,请参考以下文章
从终端运行 Xcode 无法打开 javascript 脚本(错误:仪器无法打开“TextWrangler 文本文档”格式的文件。”)