OS X下运行sudo go command

写code的时候遇到需要修改/etc/hosts的情况,这个文件需要root权限才能修改。在container上能够成功运行,而在Mac本地调试时遇到权限问题。这个时候想当然地运行sudo ginkgo *,信心满满地敲完密码后看的如下错误信息:

package **: cannot download, $GOPATH not set. For more details see: go help gopath  

这是因为go相关工具的执行文件安装在当前用户环境(GOPATH, GOROOT)下,而这个路径是普通用户的。Sudoers的环境下没有相关的信息。所以我们需要做如下3步操作:

0x01. 确认需要修改Sudoers配置信息
首先需要提一句:如没必要,不要使用sudo锤子。只有在清楚知道你在做什么情形下,才去执行命令。

0x02. 进入配置文件
sudoers配置文件在/etc/sudoers,你也可以直接敲sudo visudo命令修改配置。

0x03. 添加golang环境信息。
在文件相应位置添加如下两行:

Defaults    env_keep += "GOPATH"  
Defaults    env_keep += "GOROOT"  

0x0F. Refs:
osx - go get fails with permission denied on certain go packages