LoginSignup
0
0
お題は不問!Qiita Engineer Festa 2023で記事投稿!

direnvでディレクトリごとに環境変数を切り替える

Posted at

タイトル通りでdirenvを使うとディレクトリごとに環境変数を定義することができて便利だと感じたのでメモ。サイバーエージェントのMLOps資料で知ったのをきっかけに使い始めました。

例えば、aws cliを使用する際に--profileオプションで認証情報を指定することができるが、つけ忘れる可能性があるし面倒なのでもっと楽にしたい時などに使ってます。

本記事の実行環境:Ubuntu 22.04.2 LTS(WSL 2)

使ってみる

.envrcを作成し環境変数を記述します。例えば、/work/sample_direnv/に以下の.envrcを作成します。=と文字間はスペースを入れずに詰めてください。

.envrc
export HOGE=hoge
export FUGA=111

ちなみにexportコマンドは環境変数を設定するときに使用するコマンドです。

direnv: error /home/user/work/sample_direnv/.envrc is blocked. Run `direnv allow` to approve its content

.envrcを書き換えた場合、そのままだとこのようなエラーが発生するはずです。direnv allowコマンドで.envrcの内容を承認する必要があります。

読み込んだ環境変数は.envrcが置かれているディレクトリ以下で使用できます。

/work/sample_direnv$ echo ${HOGE}
hoge

例えば、ここから一つ上のworkディレクトリに移動すると、direnv: unloadingと表示され、環境変数が使用できなくなると通知されます。

aws cli向けにdirenvを使用する場合、前述の流れでAWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_DEFAULT_REGION等必要な情報を記述すれば良いです。

補足

.envrcをリポジトリにコミットしてしまうと認証情報が洩れるので注意してください。
例えば、.gitignoreファイルに.envrcを記述する等して回避します。

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0