go 使用 exec.command 执行which docker 命令错误

my_onion · · 977 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

# 问题: > 本人是mac,docker默认安装在/user/local/bin/docker 。直接用exec.command("docker ...") 会提示找不到docker命令,所以手动在docker前加上了/user/local/bin/ 执行成功。 > 但是实际情况 ,docker目录不是一定的,所以想先获取docker安装位置,which docker 。得到路径再执行docker 命令,可是用exec.Command命令运行which docker一直失败,只有一个错误 state 1 .执行which tar都能返回正确路径 。 > 直接在终端执行都没有问题,使用exec.command出现以上问题。有没有遇到过类似问题的同事,请指点。 #主要代码如下: ```go # func get_cmdPath(name string) string { return exeSysCommand("which " + name) } func exeSysCommand(cmdStr string) string { cmd := exec.Command("/bin/bash", "-c", cmdStr) cmd.Stderr = os.Stderr opBytes, err := cmd.Output() if err != nil { fmt.Println(err) return "" } return string(opBytes) } ``` 几个执行结果图: ![image.png](https://static.studygolang.com/190115/7cbef56bce2658fda99426e90333e1e2.png) ![image.png](https://static.studygolang.com/190115/50f84ec5607c86a0f5ea30b2127d2465.png) ![image.png](https://static.studygolang.com/190115/3ef63a399cfa1478254ae72ddbb3fe3f.png) 欢迎各位大神评论。

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

977 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传