【问题标题】:Web Assembly emrun: command not found when running from batch script, but runs fine in command windowWeb Assembly emrun:从批处理脚本运行时找不到命令,但在命令窗口中运行良好
【发布时间】:2025-11-25 19:00:02
【问题描述】:

我设法使用 Windows Subsystem for Linux (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: commnand not found”中提到的错误。

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

我对批处理脚本没有太多经验,我不知道如何从这里开始。我觉得我错过了一些明显的东西,但我就是不知道控制台和脚本文件之间有什么区别?

感谢您花时间阅读本文。

【问题讨论】:

    标签: bash webassembly


    【解决方案1】:

    在更多的头部粉碎之后自己找到了答案!感谢我看到的所有模因,我实际上会与您分享答案。

    我编辑了脚本,使它看起来像这样:

    #!/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 变量以具有上述值的方法,但不幸的是我不知道如何去做。 尽管如此,这个解决方案对我有用。

    【讨论】:

      最近更新 更多