シェルで特定の開発ディレクトリ以下に移動すると自動的に設定ファイルで指定された環境変数を設定し、そのディレクトリから別のディレクトリに移動すると戻してくれる direnv が便利。
https://github.com/zimbatm/direnv
Go で開発するのに GOPATH と bin への PATH 追加が面倒だったので導入してみた。
git clone https://github.com/zimbatm/direnv cd direnv make build cp -a direnv $HOME/local/bin
なお direnv は Go で書かれているのでソースからビルドするには Go の開発環境が必要。
.bashrc に以下を追加。
if command -v direnv > /dev/null; then eval "$(direnv hook bash)" fi
その他のシェルでの設定は https://github.com/zimbatm/direnv 参照。
$ cd project_dir $ export EDITOR=emacsclient # 次のコマンドで開くエディタ $ direnv edit . .envrc の編集用にエディタが開くので layout go と入力して保存。
後は Bash でこのディレクトリ以下(サブディレクトリも含む)に移動するとこの .envrc のあるディレクトリが GOPATH に追加され、また bin ディレクトリが PATH に追加される。便利。
なお direnv edit . しないで直接 .envrc を作った場合は、別途 direnv allow . を実行してこの .envrc を使うことを明示的に許可する必要がある。許可したかどうかは ~/.config/direnv/allow/* に保存される(freedesktop.org の XDG Base Directory Specification っぽくなっているので XDG_CONFIG_HOME 環境変数があれば ~/.config ではなくてその下に保存される)。
その他標準で
などが用意されている。また
PATH_add bin
のようにして PATH への追加も簡単。
その他コマンドの実行も可能なので開発以外にもいろいろ便利に使える。
Naney (なにい) です。株式会社MIXIで SNS 事業の部長をしています。
※本サイトの内容は個人的見解であり所属組織とは関係ありません。