質問: 初歩的な質問ですみません。 本番サーバーに環境変数を永続的に設定したいのですが、exportだと一時的にしか設定できません。どのように永続的な環境変数を設定すればよいかご教示いただきたいです。環境変数にDBなどの情報を書き込んで参照するようなイメージです。 具体的にコマンドやxxxファイルにこのように書くといったように具体的に書いてもらえると助かります。 よろしくお願い致します。
回答: ### 前提条件等 過去の質問の傾向から、Linux構成でかつSELinuxは無効となっている前提で、環境変数を設定することについて回答いたします。 想定する範囲が広くなってしまうので、もう少し情報をいただけれると、回答しやすくなります。 ※SELinuxを無効にすることを推奨するわけではなく、SELinuxに対する考慮をしていない回答ということです ※この場合、OSの種類から判定しなくてはならず、WindowsなのかLinuxなのか、LinuxではRedHat系なのかDebian系なのか、バージョン等を回答に盛り込むことが必要となります。なお、rails等のDB設定についてはdatabase.yml等である認識ですので、この回答は当てになりません。 ### 全ユーザー対象の環境変数設定 以下のファイルに設定したい環境変数を記載してください。`hoge`は任意名称で、何を設定するのかがわかる名前を付けててください。 `/etc/profiles.d/hoge.sh` ユーザーがログインされる場合のみ有効です。 ### 特定のユーザーのみの環境変数設定 以下のファイルに設定したい環境変数を記載してください。 `/home/username/.bash_profile` メモ: 環境変数を変更する場合、以下のファイルへ設定が追加されていることもあるのでご注意ください。 `/home/username/.bashrc` ユーザーがログインされる場合のみ有効です。 ### systemdを使用したサービス等で環境変数を読み込む方法 以下のファイルに設定したい環境変数を記載してください。(任意の場所) `/etc/systemconfig/hoge.env` 次に設定しているサービスに対して`EnvironmentFile`の設定を行います。(以下は架空のサービスなので、存在しません) `/etc/systemd/system/hoge.service` ``` [Service] EnvironmentFile=/etc/systemconfig/hoge.env ExecStart=.... ``` 設定が完了したら、`systemctl daemon-reload`を行い、サービスをrestartしてください。