Web Assembly emrun:从批处理脚本运行时找不到命令,但在命令窗口中运行正常

时间:2019-10-02 20:36:32

标签: bash webassembly

我使用Linux的Windows子系统(Ubuntu)整理并运行了一个hello world程序Web Assembly。基本上遵循此处的入门页面:https://webassembly.org/getting-started/developers-guide/

我使用以下命令成功运行了该程序:

emrun --browser "/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe" --verbose --port 8081 hello.html

当我在命令行中运行此脚本时,一切都很好,但当我创建了一个名为start.sh的脚本时,它看起来像这样:

#!/usr/bin/env bash
echo "Starting hello world in chrome."
emrun --browser "/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe" --verbose --port 8081 hello.html

我得到标题为“ emrun:找不到命令”的错误。

第一行“#!/ usr / bin / env bash”是从Wasm SDK中的一个.sh文件复制而来的,所以我认为这是对的吗? Ive还尝试使用Windows 10提供的编辑环境变量将Wasm SDK添加到$ PATH,但是没有运气。

我没有大量的批处理脚本经验,并且我不确定如何从此处继续。.我感觉我缺少一些明显的东西,但是我无法弄清控制台和脚本文件之间的区别是什么?

感谢您抽出宝贵的时间阅读本文章。

1 个答案:

答案 0 :(得分:0)

砸了一些头后自己找到了答案!多亏了我见过的所有模因,我才能与您分享答案。

我编辑了脚本,因此看起来像这样:

#!/usr/bin/env bash
cd ..
cd Wasm/emsdk
source ./emsdk_env.sh --build=Release
cd ..
cd ..
cd hello
emcc hello.c -o hello.html
echo "Starting hello world in chrome."
emrun --browser "/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe" --verbose --port 8081 hello.html

现在运行“ $ sudo bash start.sh”会在控制台中显示以下消息:

Adding directories to PATH:
PATH += /home/elaurora/Wasm/emsdk
PATH += /home/elaurora/Wasm/emsdk/fastcomp/emscripten
PATH += /home/elaurora/Wasm/emsdk/node/12.9.1_64bit/bin

Setting environment variables:
EMSDK = /home/elaurora/Wasm/emsdk
EM_CONFIG = /home/elaurora/.emscripten
EMSDK_NODE = /home/elaurora/Wasm/emsdk/node/12.9.1_64bit/bin/node

Starting hello world in chrome.
... then a bunch of unrelated stuff regarding the server that was just started

为此,当然,您必须编辑每个路径,以使行

source ./emsdk_env.sh --build=Release

在emsdk文件夹中运行。

可能有更好的方法来执行此操作,也许涉及永久设置正确的PATH变量以具有上述值的方法,但是不幸的是,我不确定如何执行此操作。 尽管如此,此解决方案仍对我有效。