direnvでgo1.5.2とgo1.6beta1を切り替える設定

はじめに

go1.6beta1がリリースされました。go1.5.2と切り替えて使いたいので、direnv/direnv用の設定を書きました。

設定内容

以下の様な配置で使うことにしました。

  • go1.5.2
  • goのインストールディレクトリ: /usr/local/go
  • GOPATH: ~/gocode
  • go1.6beta1
  • goのインストールディレクトリ: /usr/local/go1.6beta1
  • GOPATH: ~/gocode1.6

まず、~/.bash_profileや~/.bashからはgoへのPATH設定やGOPATHの設定は削除します。

次に以下のファイルを作成します。

~/gocode/.envrc

export GOPATH=$HOME/gocode
export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin
export GO15VENDOREXPERIMENT=1

~/gocode1.6/.envrc

export GOROOT=/usr/local/go1.6beta1
export GOPATH=$HOME/gocode1.6
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

上記の2つのファイルを有効にします。

direnv allow ~/gocode
direnv allow ~/gocode1.6

使い方

go1.5.2を使うときは ~/gocode/ 配下のディレクトリにcdします。 すると~/gocode/.envrcがsourceされてgo1.5.2用の設定が有効になります。

go1.6beta1を使うときは ~/gocode1.6/ 配下のディレクトリにcdします。 すると~/gocode/.envrcで有効にされたgo1.5.2用の設定はアンロードされて、~/gocode1.6/.envrcがsourceされgo1.6beta1用の設定が有効になります。