原文链接
原文作者:Herbert Fischer
译者:xcshuan
通常我的机器里只有一个GOPATH,这也是大多数Gophers推荐的方案。然而,有时我们需要处理具有相同依赖关系的不同版本的不同项目,并且准确地更新它们。我们只是不想破坏正在工作的东西,或者将它们弄得一团糟。
快速解决方案是先将GOPATH指向其他地方,但是每次我们交换要做的项目时,都需要再次更改它。
所以我刚刚想出了一个简单的解决方案,它可以在使用bash的命令行中使用,并且也可以适用于其他shell。由于我是VIM用户,所以这个方案工作得很好。但我不推荐这种方法用于Sublime Text或其他任何使用自有方法来设置GOPATH的IDE。除非你每次都从相同的命令行shell来加载编辑器/IDE,而且这个IDE不用自己的方式来设置GOPATH,否则这个方案将无法工作。
解决方法很简单。只需在~/.bashrc(或~/.bash_profile)(注:.zshrc也可以)中包括以下代码片段,然后用source ~/.bashrc重载配置文件即可。这个片段将创建一个shell函数,该函数将使用定制命令cd覆盖内置命令cd,定制命令cd扫描所在目录,并扫描上级目录来找一个名为.gopath的文件。
cd () { builtin cd "$@" cdir=$PWD while [ "$cdir" != "/" ]; do if [ -e "$cdir/.gopath" ]; then export GOPATH=$cdir break fi cdir=$(dirname "$cdir") done }
现在,您只需要在每个希望作为GOPATH的目录下创建.gopath文件,那么每次进入这个目录时,重新定义的cd函数会将当前环境的GOPATH设置为该目录。
例如,让我们创建两个目录A和B,每个都有一个子目录src,以充分说明解决方案。
$ go env GOPATH /home/user/Go $ mkdir -p ~/A/src && touch ~/A/.gopath $ mkdir -p ~/B/src && touch ~/B/.gopath $ cd ~/A/src $ go env GOPATH /home/user/A $ cd ~/B/src $ go env GOPATH /home/user/B
没啥毛病,不过我现在想要原来的GOPATH了。
$ cd /home/user/Go $ go env GOPATH /home/user/B
emmmm,我们还需要在这里建立一个.gopath。
$ touch /home/user/Go/.gopath $ cd . $ go env GOPATH /home/user/Go
完全没毛病了,一个不需要任何外部依赖的简单GOPATH管理方案闪亮登场。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/33737.html
摘要:最近这些天,区块链是每个开发人员的谈资。区块链技术引起了政府和各国央行的注意简而言之,一切都表明区块链前景光明。是一组旨在促进区块链应用程序开发的项目。借助区块链技术,这一过程将变得更加安全和透明。 最近这些天,区块链是每个开发人员的谈资。来自各个领域的许多软件开发商现在正试图进入区块链市场。我们与Mobilunity的区块链软件开发人员Eugene Kyselev 讨论了他是如何走出...
摘要:最近这些天,区块链是每个开发人员的谈资。区块链技术引起了政府和各国央行的注意简而言之,一切都表明区块链前景光明。是一组旨在促进区块链应用程序开发的项目。借助区块链技术,这一过程将变得更加安全和透明。 最近这些天,区块链是每个开发人员的谈资。来自各个领域的许多软件开发商现在正试图进入区块链市场。我们与Mobilunity的区块链软件开发人员Eugene Kyselev 讨论了他是如何走出...
摘要:如何用定制你自己的环境前言学习几个月了,一直在论坛和群里潜水,一直都想写点什么回报大家积极的知识分享。关于如何使用,可以参考上面的文章和官方文档二小试牛刀,用构建一个的环境并运行程序首先来贴上我的先附上这个项目地址。 如何用Docker定制你自己的Beego环境 前言: 学习golang几个月了,一直在论坛和qq群里潜水,一直都想写点什么回报大家积极的知识分享。 前几日在CSDN上...
摘要:小白前端一枚,最近在研究,记录自己学习过程中的一些笔记,以及自己的理解。此外,结构体也支持嵌套。在函数声明时,在函数名前放上一个变量,这个变量称为方法的接收器,一般是结构体类型的。 小白前端一枚,最近在研究golang,记录自己学习过程中的一些笔记,以及自己的理解。 go中包的依赖管理 go中的切片 byte 和 string go中的Map go中的struct结构体 go中的方...
摘要:提交表单页时,所有表单数据将被自动写回到数据库对应的表中,同时确保数据的完整性。所有这些都是运行时发生的,真正的所见即所得。字体集字体集是一整套图标库,旨在设计以便增强通用主题。两个家族,一个图标库新特性字体集有两种图标系列小和大。 showImg(https://segmentfault.com/img/remote/1460000015037005?w=1750&h=866); 引...
阅读 2279·2021-11-23 09:51
阅读 1445·2021-11-22 13:54
阅读 2507·2021-11-18 10:02
阅读 815·2021-11-16 11:44
阅读 780·2021-08-16 10:57
阅读 3345·2021-08-03 14:03
阅读 1651·2019-08-30 15:54
阅读 3403·2019-08-23 14:39