Envar というコマンドラインツールを作りました。
これは環境変数の値をディレクトリーごとに切り替えるツールです。
例えば FOO という環境変数について、ディレクトリー path/to/A では hoge という値にして、ディレクトリー path/to/B では fuga という値にする、ということができます。下記のような vars.yaml ファイルでその設定をします。
FOO: path/to/A: hoge path/to/B: fuga
また、環境変数の値を別のコマンドの出力値にするということもできます。
この例は自分が使っている設定ファイルから抜粋したもので、gh コマンドで使用するアカウントを私用・しごとで切り替えるものです。
# vars.yaml GH_TOKEN: /home/kazuki/Projects/Work: gh: kakkun61_work /home/kazuki/Projects: gh: kakkun61
# execs.yaml gh: gh auth token --user %s
よくあるかもしれない質問
direnv と何が違うの?
direnv はそのディレクトリーで設定したい環境変数をそのディレクトリーに置いた設定ファイルに書きます。主にプロジェクトを使う人みんなに必要になる環境変数を設定する用途です。プロジェクト都合の環境変数です。
それに対して envar は設定ファイルはユーザーの設定ディレクトリーに置きます(例えば ~/.config/envar)。上記例のアカウントの切り替えなど個人の都合の環境変数を設定する想定です。
対応しているシェルは?