问题描述
最近在开发 Go 项目,使用 go get -u xxxx 成功下载安装包后,在终端执行新下载包的命令,一直报 zsh: command not found 的错误。一开始以为是包没安装成功,但检查后发现不是,如下图所示,swag 包有安装。后来才意识到有可能是环境变量出问题。
执行echo $PATH
命令,发现该路径最后使用的 go bin 路径并不是我所设置的 GOBIN。查找相关文件后才知道原来 oh my zsh 所加载的环境变量并不是 Mac 本身自带的环境变量不同。
原因
在 Mac 中有几个地方可以修改环境变量,分别是:
- /etc/profile
- /etc/paths
- ~/.bash_profile
其中 /etc/profile 和 /etc/paths 是全局变量,适合全部用户,当系统启动时会自动加载。这些变量都是系统级别的,修改时要小心。而 ~/.bash_profile 是当前用户使用的环境变量,一般我们新增环境变量的话,都是在这个文件中进行修改。
而 oh my zash 所加载的环境变量使用的是 ~/.zshrc 这个文件。
当我们在命令行中使用 EXPORT GOPATH="~/Code/Go"
时,其实只是把 GOPATH 添加到 ~/.bash_profile 中,对 ~/.zshrc 这个文件并没有影响。
解决方法
知道原因后那就很好解决了。接下来就是把在 ~/.bash_profile 中设置的环境变量(GOROOT、GOPATH、GOBIN)添加到 ~/.zshrc 中。
添加好后执行 source ~/.zshrc
生效配置。
总结
以后碰到类似的报错则可按以下流程检查:
- 检查软件是否正确安装
- 若软件正确安装,检查环境变量是否正确配置
本文主要参考了以下两篇文章:
- https://www.cnblogs.com/dadonggg/p/11097771.html
- https://www.jianshu.com/p/020f3d02f538
若我的文章对您有帮助,请不要吝啬您的点赞哦!
若有讲错的地方,欢迎指正 :)