如何从代码 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
mytest
与testadata
同级,fzr
bin在测试数据
可能是什么问题?
我也尝试使用 os.Getwd()
提供垃圾箱的完整路径,但这没有帮助...
访问 shell 的应用程序通常不会执行 shell initialization/configuration。比如cron一个明明也去不执行shell初始化。
要使您的程序正常运行,请添加可执行文件的绝对路径,或者从您的应用程序启动位置的相对路径:
exec.Command(“./integration/testdata/fzr”, “—help”)
(假设显示的路径是您的实际路径)
我正在尝试使用代码和 运行 针对 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在测试数据
可能是什么问题?
我也尝试使用 os.Getwd()
提供垃圾箱的完整路径,但这没有帮助...
访问 shell 的应用程序通常不会执行 shell initialization/configuration。比如cron一个明明也去不执行shell初始化。
要使您的程序正常运行,请添加可执行文件的绝对路径,或者从您的应用程序启动位置的相对路径:
exec.Command(“./integration/testdata/fzr”, “—help”)
(假设显示的路径是您的实际路径)