如何从代码 os.execute 运行 二进制

How to run binary from os.execute from code

我正在尝试使用代码和 运行 针对 bin 的命令构建二进制文件(bin 是 CLI) 通过代码,

mytest.go 文件

cmd := exec.Command("go", "build",  "-o", "./integration/testdata/fzr”,)
cmd.Dir = “./testdata"
err := cmd.Run()

现在在代码 运行 之后,我能够在 testdata 文件夹下看到 bin 现在我想 运行 像 fzr —help

这样的命令

喜欢关注

cmdOut := exec.Command(“fzr”, “—help”)
cmdOut.Dir = "./testdata/"
err := cmdOut.Run()

我收到错误

lookPathErr: {
    Name: “fzr”,
    Err: {
        s: "executable file not found in $PATH",
    },
}

现在,如果我将 fzr bin 放入 go/src/bin,我可以从终端 运行 fzr —help

项目结构如下

myGithubProject/
  |---- integration
   |---- -testdata
    |---- -fzr
   |---- -mytest.go

mytesttestadata同级,fzrbin在测试数据

可能是什么问题?

我也尝试使用 os.Getwd() 提供垃圾箱的完整路径,但这没有帮助...

访问 shell 的应用程序通常不会执行 shell initialization/configuration。比如cron一个明明也去不执行shell初始化。

要使您的程序正常运行,请添加可执行文件的绝对路径,或者从您的应用程序启动位置的相对路径:

exec.Command(“./integration/testdata/fzr”, “—help”)

(假设显示的路径是您的实际路径)