環境変数とは?Linuxでの設定・確認方法をわかりやすく解説

  • URLをコピーしました!

環境変数は、シェルやアプリケーションの挙動を制御する設定値で、システム / シェル / ユーザーごとのコンテキストで使われます。 名称だけで終わらせると「動いたり動かなかったり」で迷走しがちです。
この記事では、基本概念から具体的な設定方法、よくあるトラブル対応まで丁寧に解説します。

📌 Linux学習を体系的に整理したい方へ
シェル・コマンド・設定項目を使い分けて学べる総合ロードマップはこちら。
Linux学習ロードマップ完全版|初心者から現場レベルまでの勉強手順とコマンド体系まとめ

目次

目次

環境変数とは何か?

環境変数は、シェルやアプリケーションが参照する“設定値”です。 プログラムはこれらの値を元に挙動を変えます。例:

  • PATH:コマンド検索パス
  • HOME:ユーザーのホームディレクトリ
  • LANG:言語/ロケール

環境変数は一度設定すれば、同じユーザー/セッションではそのまま参照されます。

環境変数のスコープ(どこまで有効か)

  • セッション内:今開いているシェルだけ
  • ユーザー全体:ログインし直した全てのシェル
  • システム全体:全ユーザー・全シェル

例:bash セッションで設定しただけの場合だけ有効です。

環境変数の一覧確認方法

# 現在の環境変数一覧
printenv
# または
env

一時的に環境変数を設定(セッション限定)

# 例:PATHにカスタムディレクトリを追加
export PATH="$HOME/bin:$PATH"

この設定は現在のセッションのみ有効です。

永続的に環境変数を設定する方法

~/.bashrc / ~/.bash_profile

# ~/.bashrc の例
export JAVA_HOME="/usr/lib/jvm/java-11-openjdk"
export PATH="$JAVA_HOME/bin:$PATH"

設定後は再ログイン、または source ~/.bashrc で即時反映します。

/etc/environment(システム全体)

# /etc/environment の例
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

全ユーザーに影響する設定です。sudo権限が必要。

bash / zsh / systemd での違い

bash と zsh の違い

  • bash:~/.bashrc が主要
  • zsh:~/.zshrc が主要

どのシェルを使っているかで設定ファイルが変わるので要注意です。

systemd の環境変数

systemd サービスには独自に環境変数が設定でき、Environment=EnvironmentFile= を使います。

[Service]
Environment="APP_ENV=production"
EnvironmentFile=/etc/sysconfig/myapp

よくあるトラブルと対処

設定が反映されない

原因:設定ファイルが読み込まれていない / シェルの違い / export し忘れ

対処

  • source ~/.bashrc で再読み込み
  • 正しいファイル(zshなら ~/.zshrc)に追記
  • systemd なら systemctl daemon-reload

PATH が長すぎたり順序が逆になっている

原因:PATH の追記順が逆、不要項目が多い

対処:追記順を見直し、不要ディレクトリを整理

システムとユーザーで設定が競合する

原因:/etc/environment と ~/.bashrc の両方で定義

対処:優先順位に応じて片方に集約する

FAQ

Q1. export と env の違いは?
export は変数を「子プロセスにも引き継がせる」設定、env は一時的に環境変数を変更してコマンドを実行するものです。

Q2. シェルを変えたら設定が反映されない
使っているシェルに応じた設定ファイルを修正する必要があります(bash → ~/.bashrc、zsh → ~/.zshrc など)。

Q3. systemd サービスの環境変数を変更したい
service のユニットファイルで Environment= または EnvironmentFile= を設定し、systemctl daemon-reload を実行します。

Q4. 永続化したのに反映されない
設定後に再ログイン or shell の再読み込み(source ~/.bashrc)を忘れている可能性があります。

環境変数は Linux の土台部分なので、**設定箇所 + 反映タイミング + シェル種別** の3点を常に意識して扱いましょう。

目次