我正在尝试使用代码构建二进制文件并针对 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
mytest
与testadata
同级,fzr
bin为under test数据
可能是什么问题?
我还尝试使用 os.Getwd()
提供 bin 的完整路径,但这没有帮助......
最佳答案
访问 shell 的应用程序通常不执行 shell 初始化/配置。比如cron一个明明也去不执行shell初始化。
要使您的程序正常运行,请添加可执行文件的绝对路径,或者从您的应用程序启动位置的相对路径:
exec.Command(“./integration/testdata/fzr”, “—help”)
(假设显示的路径是您的实际路径)。
关于go - 如何从 os.execute 从代码运行二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53144856/