go 调用命令行 shell command not found/ 执行中 exit

  • 前提:服务器shell脚本执行正常,但是go调用shell脚本错误
// 加在此处
cmd := exec.Command("bash","-c",your command)
//_, err = cmd.Output()
// 直接上述cmd.Output() 不打印错误详情直接exit
var out bytes.Buffer
var stderr bytes.Buffer
cmd.Stdout = &out
cmd.Stderr = &stderr
err = cmd.Run()
if err != nil {
	gt.Logger().Error(err, stderr.String())
} else {
	gt.Logger().Info(out.String())
}
  • 解决方式:
    命令行打印PATH环境变量
    linux
    echo $PATH --> your path
    最上面代码加一行
// 加在此处
os.Setenv("PATH", your path)
cmd := exec.Command("bash","-c",your command)

  • 补充:如果仍然有问题,如:python3报错 ModuleNotFoundError: No module named xxx
    1.激活python环境,eg: conda activate xxx
    2.echo $PATH --> your path,再次执行前面步骤
    3.不妨探究下python执行的依赖环境,激活后echo $PATH,多出很多环境变量信息

  • 探究:
    这种方式其实不常见,测试发现, 主要是业务方
    将环境变量配置初始化配置在了用户目录.bashrc脚本中
    命令行ssh登录后确实都很正常, 但是golang运行默认加载系统PATH(os.Getenv("PATH"))环境,不走用户环境变量PATH,少了用户那部分可执行程序
    打印加一下环境变量PATH即可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值