環境ごとに違う値であったり、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'"
}
やっていることは単純で、
- カレントディレクトリに.envファイルがあるか探す
- ファイルを読み込んで1行ずつ処理しだす
-
=
で$key
と$value
に分割して環境変数に入れる
ということをやっている。
PowerShellでは環境変数は$env:???
になるので、そこが参考URLとの違いになる。
あとはこれを自分のPowerShellプロファイルに書き込めば、コンソール起動時に読み込んでくれる。
PowerShellプロファイルは$profile
変数を見ればファイルパスが確認できる。