Note

3年後の自分のために書いています

シェルの環境変数にいい感じにクレデンシャルを渡す方法

例えば CLI アプリケーションを実行するのに何らかのクレデンシャルが必要な時、アプリケーション側で環境変数に対応してくれている場合はこんな感じでやるといいよと職場の方に教えてもらった。

自分は zsh を使ってるので、その前提で話を進めますがどのシェルでも大きく変わらない話のはずです。

ホームディレクトリ以下に .credentials 的なディレクトリを作り、クレデンシャル名と同じファイル名に値を書いておく。

# ~/.credentials
$ echo "INSERT_YOUR_USER_ID" > hoge_user_id
$ echo "INSERT_YOUR_ACCESS_TOKEN" > hoge_access_token

そして .zshenv などで環境変数にセットしてあげる。

# .zshenv

# environment variables
export HOGE_USER_ID=$(<~/.credentials/hoge_user_id)
export HOGE_ACCESS_TOKEN=$(<~/.credentials/hoge_access_token)

👆 は export HOGE_USER_ID=`cat ~/.credentials/hoge_user_id` 的な感じでも書けるようだ。バッククオート記法の方が sh との互換性があるそう。

これでOK。

$ echo $HOGE_USER_ID
INSERT_YOUR_USER_ID

でもそもそも環境変数にクレデンシャル入れるのセキュリティ的にどうなのって議論もあるようですね。

セキュリティ、環境変数、そして - diary.sorah

参考

変数を使用する | UNIX & Linux コマンド・シェルスクリプト リファレンス