在linux系统中编译go语言程序的时候出现一个很离奇的错误。
1.环境变量GOPATH设置正常。
2.go env显示$GOPATH正常。
3.sudo go install却报错!
can't load package: package hello: cannot find package "hello" in any of: /usr/local/go/src/hello (from $GOROOT) /root/go/src/hello (from $GOPATH)
在自己琢磨无果后,决定百度一下该问题产生的原因,然而坑爹的事情再一次发生了,无论是百度、还是谷歌都没有该问题的解决方法。
万幸的是,在经过一段时间的苦苦探寻后,最终还是找到了问题出现的原因:当普通用户使用sudo命令时,系统出于安全问题会重置环境变量。
因此当我分别使用go env
和sudo go env
时,会发现go的环境变量有些许出入的地方。
解决方法:
使用sudo vim /etc/soduers
命令修改/etc/sudoers文件:将”Defaults env_reset”改成”Defaults !env_reset”,原先使用sudo模式需要重置用户的所有环境变量,改变此选项后就不再重置了。