Linuxで環境変数を永続化させたい

こんにちは。今回はLinuxのシェルを立ち上げなおした時に環境変数が消えてしまい困った経験はありませんか?今回はその悩みを解決したいと思います。

シェルを再起動すると環境変数が消える原因

それはずばり、環境変数はプロセスの中でのみ有効だからです。特定のプロセスで定義した環境変数はプロセスの終了と共に消えてしまいます。

実例で解説します。

皆さんがターミナルからシェルを起動すると、プロセスが立ち上がります。bashを使用する前提で話をすると、bashコマンドを実行しbashのシェルセッションがプロセスとして立ち上がるイメージですね。

$ bash
# bashプロセスが立ち上がる

bashの中で以下のように環境変数を定義します。

$ export TEST="hello"
$ printenv TEST
// hello

bashをexitで終了するとプロセスが終了します。この時点で環境変数TESTも同時に消えます。

$ exit
// ターミナルが閉じる

このようにプロセスの終了と共に環境変数は破棄される性質を持っています。

永続化させる方法

ここからは永続化させる方法について解説します。初めに断っておきますと、環境変数はプロセスの終了と共に破棄される性質があるので、純粋に永続化は無理です。ここでいう永続化は一度設定した環境変数を再設定することなくシェルで使用する方法とします。

永続化させるにはシェルの起動時に読み込まれる設定ファイルで環境変数を定義します。初期セットアップ時に毎回環境変数を定義するイメージですね。

では具体的な設定方法を見ていきます。今回はbashを例に解説していきます。他のシェルをご利用の方は設定ファイル名が異なりますので、注意してください。

ユーザーのホームフォルダ上に.bash_profileファイルを作成します。この名前でファイルを作成するとbashのログイン時に一度だけ実行されるようになります。

$ touch ~/.bash_profile

ではエディタで.bash_profileを編集していきます。

export TEST="hello"

今回は環境変数TESTを定義しました。

最後に動作確認をしてみましょう。一度ターミナルを終了、もしくはLinuxをログアウトして、再度ログインします。その後環境変数が参照できることを確認します。

$ printenv TEST
// helloが表示される

まとめ

今回は環境変数を永続化させる方法を解説しました。ログイン時に読み込まれる設定ファイル(.bash_profile)に環境変数を定義することで永続化を実現しました。

Linux

Posted by kobainmac