環境変数の永続化
これまで、現在のターミナルセッション中のみ有効な環境変数を設定してきました。ターミナルを閉じたりログアウトしたりすると、これらの変数は失われます。このステップでは、セッションをまたいで環境変数を永続化する方法を学びます。
設定ファイルに環境変数を保存する
環境変数を永続化するために設定できるファイルはいくつかあります。
~/.bashrc
または ~/.zshrc
:ユーザー固有の変数用
/etc/environment
:システム全体の変数用
/etc/profile
または /etc/profile.d/
内のファイル:ログイン時に読み込まれるシステム全体の変数用
ユーザーのシェル設定ファイルにいくつかの環境変数を追加しましょう。この実験環境では ZSH を使用しているので、~/.zshrc
ファイルを編集します。
nano ~/.zshrc
ファイルの末尾までスクロールし、以下の行を追加します。
## Custom environment variables
export EDITOR="nano"
export CUSTOM_PATH="$HOME/bin"
export GREETING="Hello from .zshrc!"
ファイルを保存し (Ctrl+O を押し、Enter を押す)、nano を終了します (Ctrl+X を押す)。
これらの変更を現在のセッションに適用するには、ファイルをソースする必要があります。
source ~/.zshrc
次に、変数が設定されているか確認します。
echo $EDITOR
echo $CUSTOM_PATH
echo $GREETING
.zshrc
ファイルで設定した値が表示されるはずです。
これらの環境変数は、新しいシェルセッションを開始するたびに利用可能になります。
カスタム環境変数ファイルの作成
環境変数を管理する良い方法は、特にプロジェクト固有の変数については、それ専用の別のファイルを作成することです。これにより、設定の管理と共有が容易になります。
プロジェクトディレクトリに .env
という名前のファイルを作成しましょう。
cd ~/project
nano .env
以下の内容を追加します。
## Project environment variables
export PROJECT_NAME="Linux Environment Lab"
export PROJECT_VERSION="1.0.0"
export DEBUG_MODE="true"
ファイルを保存し (Ctrl+O を押し、Enter を押す)、nano を終了します (Ctrl+X を押す)。
これらの変数を現在のセッションに読み込むには、ファイルをソースします。
source ~/project/.env
次に、変数が設定されているか確認します。
echo $PROJECT_NAME
echo $PROJECT_VERSION
echo $DEBUG_MODE
.env
ファイルの値が表示されるはずです。
環境変数を読み込むスクリプトの作成
最後に、ファイルから環境変数を読み込むスクリプトを作成しましょう。これは開発環境で一般的なパターンです。
cd ~/project
nano load_env.sh
以下の内容を追加します。
#!/bin/bash
## Script to load environment variables from a .env file
ENV_FILE=".env"
if [[ -f "$ENV_FILE" ]]; then
echo "Loading environment variables from $ENV_FILE"
## Read each line from the .env file
while IFS= read -r line || [[ -n "$line" ]]; do
## Skip comments and empty lines
if [[ $line =~ ^## ]] || [[ -z $line ]]; then
continue
fi
## Export the variable if it starts with "export "
if [[ $line == export* ]]; then
## Remove the "export " prefix and export the variable
eval "${line}"
echo "Exported: ${line#export }"
fi
done < "$ENV_FILE"
echo "Environment variables loaded successfully"
else
echo "Error: $ENV_FILE file not found"
exit 1
fi
ファイルを保存し (Ctrl+O を押し、Enter を押す)、nano を終了します (Ctrl+X を押す)。
スクリプトを実行可能にします。
chmod +x ~/project/load_env.sh
次に、前に設定した変数を解除してから、スクリプトを実行して再度読み込みます。
unset PROJECT_NAME PROJECT_VERSION DEBUG_MODE
echo "PROJECT_NAME: $PROJECT_NAME"
## Now load the variables using the script
~/project/load_env.sh
## Check if the variables are now set
echo "PROJECT_NAME: $PROJECT_NAME"
このスクリプトは .env
ファイルを読み取り、export
キーワードで定義された各変数をエクスポートします。
このアプローチは、プロジェクト固有の環境変数を管理するために開発環境で一般的に使用されています。