PowerShellのコンソール起動時に.envを読み込む

環境ごとに違う値であったり、Gitなどに入れたくない値などは.envファイルにまとめていたりする。
PowerShellのコンソール画面を起動する時に.envファイルを読み込んで欲しいときがあったので自動化してみた。

Get-ChildItem (Get-Location) |
    Where-Object {-not $_.PsIsContainer -and $_.Name -eq ".env"} |
    Get-Content |
    ForEach-Object {
        $key, $value = $_.split('=', 2);
        Invoke-Expression "`$env:$key='$value'"
    }

やっていることは単純で、
1. カレントディレクトリに.envファイルがあるか探す
2. ファイルを読み込んで1行ずつ処理しだす
3. =$key$valueに分割して環境変数に入れる
ということをやっている。

PowerShellでは環境変数は$env:???になるので、そこが参考URLとの違いになる。

あとはこれを自分のPowerShellプロファイルに書き込めば、コンソール起動時に読み込んでくれる。
PowerShellプロファイルは$profile変数を見ればファイルパスが確認できる。

参考URL
power shell の変数について。 - その他(プログラミング・開発) 解決済み| 【OKWAVE】

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.