はじめに
Go1.11以降を使うときに、パッケージの依存管理にはGo Modulesが必要になるそうです。
(それまでのバージョンでは、glideやdepを使用していました)
今回は、GO111MODULE
とうい環境変数を指定してGo Modulesを有効にしたいので、direnvを使用することにしました。
direnvを使うと、環境変数をディレクトリ毎に設定できるようになります。
実行環境
OS:Mac OS X / 10.14.5
Shell:bash
direnvのインストール
インストール
MacなのでHomebrewから失礼します。
$ brew install direnv
.bashrcの設定
zshでも他のshでもかまいません。
# 設定の追加
echo 'eval "$(direnv hook bash)"' >> ~/.bashrc
echo 'export EDITOR=$(which vim)' >> ~/.bashrc
# 反映
$ source ~/.bashrc
ディレクトリ毎の設定
今回は、Goのプロジェクトが置いてあるディレクトリ名cellar
を対象にしてみます。
# 設定したいディレクトリに移動
$ cd go/src/cellar
# 個別設定するために編集(vimが立ち上がります)
$ direnv edit .
# vimで以下を追記して保存
export GO111MODULE=on
保存後に、以下のようなメッセージが表示されます。これで追加は完了です。
direnv: loading .envrc
direnv: export +GO111MODULE
確認
先ほど設定したディレクトリから離れると、以下のようなメッセージが表示されます。
$ cd ..
direnv: unloading
設定したディレクトリに戻ると、設定したよって教えてくれます。
$ cd cellar/
direnv: loading .envrc
direnv: export +GO111MODULE
いちいち教えてくれるところが、かわいい弟のようです。
さいごに
今回は、一つの環境変数を設定したいが為に、direnvを導入してみました。
まだまだ他の使い方もあるかもしれませんが、もしあればまた次回に。