direnvを使ってgithubのアカウントを複数設定する
はじめに
仕事のGithubアカウントと個人のGithubアカウントが別のため、direnvを使用してディレクトリごとに別のアカウントを使用できるようにしました。
direnvとは
direnvとはディレクトリごとに.envrc
を設定することによりディレクトリごとに環境を変更することができます。Githubのsshだけでなく色々な用途に使えます。
direnvのインストール
ドキュメントに従って以下を実行します。
$ git clone https://github.com/direnv/direnv
$ cd direnv
$ make install
私の環境では最新版のv2.14.0
がうまく動かなかったため、v2.7.0
をインストールしました。
$ git clone https://github.com/direnv/direnv
$ cd direnv
$ git checkout v2.7.0
$ make install
.envrc
の設定
まずそれぞれのアカウント用に別のssh keyを用意します、ここでは仮に~/.ssh/id_rsa_github1
, ~/.ssh/id_rsa_github2
とします。
direnvではディレクトリ配下全ての設定を書き換えることができるので、作業ディレクトリをそれぞれ別に~/work
, ~/personal
とします。
次にそれぞれのディレクトリにssh keyを設定します。
GIT_SSH_COMMANDの環境を設定することで、gitコマンドを入力した際に自動的にこのコマンドが呼ばれるため.envrc
に以下のコードを追加します。
# ~/work/.envrc export GIT_SSH_COMMAND="ssh -i ~/.ssh/id_rsa_github1"
# ~/personal/.envrc export GIT_SSH_COMMAND="ssh -i ~/.ssh/id_rsa_github2"
direnv: error .envrc is blocked. Run `direnv allow` to approve its content.
のエラーが出た際には
$ direnv allow
を実行すると有効にすることができます。
まとめ
複数のGithubアカウントを扱うことができるようになりましたが、芝が分散してしまうのでとても悲しいです。個人のアカウントが使える時代が来ることを祈っております。