当前位置: 首页 > Linux

EasymanagemultipleGOPATHs(translation)

时间:2023-04-06 20:22:01 Linux

原文链接原作者:HerbertFischer译者:xcshuan通常我的机器上只有一个GOPATH,这是大多数Gophers推荐的方案。但是,有时我们需要处理相同依赖的不同版本的不同项目并准确地更新它们。我们只是不想破坏正在运行的东西,或者把它们搞砸。一个快速的解决方法是首先将GOPATH指向其他地方,但是每次我们交换项目时都需要再次更改。所以我想出了一个简单的解决方案,它可以使用bash从命令行运行,也适用于其他shell。因为我是VIM用户,所以这个方案工作得很好。但我不建议将此方法用于SublimeText或任何其他使用其自身方法设置GOPATH的IDE。除非您每次都从同一个命令行shell加载编辑器/IDE,并且该IDE不会以自己的方式设置GOPATH,否则此解决方案将不起作用。解决方法很简单。只需在~/.bashrc(或~/.bash_profile)中包含以下代码片段(注意:.zshrc也可以),然后使用source~/.bashrc重新加载配置文件。此代码段将创建一个shell函数,该函数将使用自定义命令cd覆盖内置命令cd,该命令扫描它所在的目录,并扫描父目录以查找名为.gopath的文件。cd(){内置cd"$@"cdir=$PWDwhile["$cdir"!="/"];做if[-e"$cdir/.gopath"];然后exportGOPATH=$cdirbreakficdir=$(dirname"$cdir")done}现在,你只需要在每个你想用作GOPATH的目录下创建一个.gopath文件,然后每次进入这个目录,重新定义的cd函数将为该目录设置当前环境的GOPATH。例如,让我们创建两个目录A和B,每个目录都有一个子目录src,以充分说明解决方案。$goenvGOPATH/home/user/Go$mkdir-p~/A/src&&touch~/A/.gopath$mkdir-p~/B/src&&touch~/B/.gopath$cd~/A/src$goenvGOPATH/home/user/A$cd~/B/src$goenvGOPATH/home/user/B很好,但我现在想要旧的GOPATH。$cd/home/user/Go$goenvGOPATH/home/user/Bemmmm,我们还需要在这里创建一个.gopath。$touch/home/user/Go/.gopath$cd.$goenvGOPATH/home/user/Go完全没问题,一个不需要任何外部依赖的简单的GOPATH管理解决方案就在这里。