【问题标题】:How to run binary from os.execute from code如何从 os.execute 从代码运行二进制文件
【发布时间】:2018-11-04 19:57:38
【问题描述】:

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

mytest.go文件

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

现在代码运行后,我可以看到bintestdata 文件夹下 现在我想运行像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 处于同一级别,fzr bin 在测试数据中

可能是什么问题?

我还尝试使用 os.Getwd() 提供 bin 的完整路径,但这无济于事...

【问题讨论】:

    标签: go child-process


    【解决方案1】:

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

    要使您的程序正常工作,请添加可执行文件的绝对路径,或替代从您的应用程序启动位置开始的相对路径:

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

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

    【讨论】:

      猜你喜欢
      • 2011-09-05
      • 2017-02-17
      • 1970-01-01
      • 2015-05-26
      • 2011-05-07
      • 2018-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多