以前、PostgreSQL のパスワードを
環境変数で設定する記事を書きましたが
PostgreSQL 的には非推奨のようです。
(一部のオペレーティングシステムではroot以外のユーザで環境変数が見える場合がるためとのこと)
[参考]
環境変数 - PostgreSQL 9.3.2文書
一部のオペレーティングシステムがどれを指すのかわかりませんが、 プロセスが使ってる環境変数の見方が気になったので ちょっと確認してみました。
まず環境変数を設定します。
$ export PGPASSWORD=testpassword
PostgreSQL のデータベースに接続するプロセスを作成します。
$ psql -U testuser -d testdb
psql (9.3.10, server 9.3.12)
Type "help" for help.
testdb=#
[Ctrl]+[z] プロセスを眠らせます。
[1]+ Stopped psql -U testuser -d testdb
起動中のプロセスを確認します。
$ ps PID TTY TIME CMD 28796 pts/0 00:00:00 bash 29754 pts/0 00:00:00 psql 29834 pts/0 00:00:00 ps
参考サイトによると、環境変数は「/proc/%{PID}/environ」に 格納されているそうです。
[参考]
Linux/Unixプロセス起動時の環境変数をダンプする | ギークを目指して
確認してみます。
$ cat /proc/29754/environ | sed -e 's/\x0/\n/g' | grep PGPASSWORD PGPASSWORD=testpassword
たしかに確認できました。
使用している環境では root ユーザでなければ 自分以外の環境変数は見れませんでしたが、 自分の環境変数を(rootの権限が使えれば、他のプロセスの環境変数も)確認したいこともあると思うので 覚えておくと良いのかもしれません。