GVM -Golang 的多版本管理工具
切換go版本,GOPATH跟著變動的問題
2. gvm運作方式
gvm是利用腳本撰寫指令,對環境變數進行判斷跟修改,gvm成功安裝會在家目錄~/.bashrc
這個腳本檔案的最後一行加入以下敘述
鳥哥的Linux 私房菜 — 10.4.3 環境設定檔.bashrc
[[ -s "/Users/someone/.gvm/scripts/gvm" ]] && source "/Users/someone/.gvm/scripts/gvm"
中括號為判斷模式,說明括號內情況,-s是說該檔名是否存在且為『非空白檔案』,如果有內容中括號則回傳true
&&的描述如下,若前面的敘述為真,則執行後面的敘述,類似的運算子,還有||的描述,若前面的敘述為真,則”不”執行後面的敘述
對腳本撰寫有興趣的請去看鳥哥,總之最後上面的敘述會執行這個路徑的gvm腳本/Users/someone/.gvm/scripts/gvm
3. 問題
每次使用gvm use [version] 的指令後,環境變數都會被改變,當然改變GOROOT的環境變數是很好的,畢竟我們就是想控制GO的版本,但是偏偏作者連GOPATH的變數也跟著改變,這就有點麻煩,就我個人使用,我會希望GOPATH的路徑可以一致,也發現其他人有類似問題
4. 解決
當你用gvm install go1.12
會在~/.gvm/environments/
建立兩個相對應的檔案go1.12
和go1.12@global
,使用gvm use go1.12 的指令,就是去讀取這些檔案
若使用gvm use go1.12 --default則會生成default
檔案,內容與go1.12
完全一致,如下圖所示
想要每次切換版本,都讓GOPATH固定,必須對gvm安裝的go版本,修改路徑~/.gvm/environments/
下的文件
以我的例子就是修改檔案go1.4
,go1.11.5
,go1.12
,修改內容都一樣,將GOPATH與PATH修改,每個人的GOPATH不同,看你自己想放在哪邊吧
這樣做一定會影響到gvm其他的功能,但我主要只用來安裝不同go版本,跟切換用途,沒有造成太大影響,若害怕修改有問題,可以像我一樣,用其他資料夾備份原始設定
以上就是這次的總結
export GOPATH; GOPATH="$HOME/go"
export PATH; PATH="$GOROOT/bin:${PATH}:$GOPATH/bin"