运行Go exec.Command()的Visual Studio代码将超时,并带有;kubectl版本“;

运行Go exec.Command()的Visual Studio代码将超时,并带有;kubectl版本“;,go,visual-studio-code,kubectl,Go,Visual Studio Code,Kubectl,我试图在VisualStudioCodeV1.47.1中的Golang应用程序中执行一些kubectl命令 我当前使用的代码如下所示: out,err:=exec.Command(“/bin/bash”、“-c”、“kubectl”).Output() 如果出错!=零{ fmt.Println(“未能执行”) fmt.Println(错误) } fmt.Println(字符串(输出)) 这执行得很好,并且输出类似于我的机器上shell中显示的内容 但是,我想执行命令kubectl versio

我试图在VisualStudioCodeV1.47.1中的Golang应用程序中执行一些
kubectl
命令

我当前使用的代码如下所示:

out,err:=exec.Command(“/bin/bash”、“-c”、“kubectl”).Output()
如果出错!=零{
fmt.Println(“未能执行”)
fmt.Println(错误)
}
fmt.Println(字符串(输出))
这执行得很好,并且输出类似于我的机器上shell中显示的内容

但是,我想执行命令
kubectl version
。因此,我尝试用以下代码更新第一行:

  • out,err:=exec.Command(“/bin/bash”、“-c”、“kubectl version”).Output()
  • out,err:=exec.Command(“/bin/bash”、“-c”、“kubectl”、“version”).Output()
  • out,err:=exec.Command(“kubectl”,“version”).Output()
  • out,err:=exec.Command(“kubectl版本”).Output()
所有这些尝试都会导致执行在超时约10秒后失败
kubectl版本
在外壳中运行良好

我还应该注意,我能够毫无问题地执行其他工具,如
out,err:=exec.Command(“/bin/bash”、“-c”、“pluto”、“version”).Output()

我的方法有什么问题


编辑:我正在使用Visual Studio代码v1.47.1的内置终端开发和运行我的程序。事实证明,使用外部终端来启动我的程序可以毫无问题地执行命令。但是,我需要知道内置VS代码终端和标准外壳之间的区别可以解释这个问题…

事实证明,通过使用Visual Studio代码的集成终端,无法从外部外壳检索环境变量。 更具体地说,缺少成功执行
kubectl
命令所需的
KUBECONFIG
环境变量

要解决此问题,可以在使用
exec.Command()
时定义环境变量:

KUBECONFIG:=“/Users/path\u to\u KUBECONFIG/KUBECONFIG.yaml”
cmd_config:=exec.Command(“/bin/bash”,“-c”,cmd)
cmd_config.Env=os.Environ()
cmd_config.Env=append(cmd_config.Env,“KUBECONFIG=“+KUBECONFIG”)
out,err:=cmd_config.Output()
如果出错!=零{
fmt.Printf(“执行命令失败”)
}
fmt.Println(字符串(输出))