このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
新Linuxコマンド演習31

新Linuxコマンド演習31 概要
「新Linuxコマンド演習31」では、環境変数(Environment Variable) について学習します。
前回の「新Linuxコマンド演習30」では、シェル変数 の基本的な設定・参照・削除・スコープ(有効範囲)について学びました。
今回の演習では、それを踏まえて シェル変数と環境変数の違い を理解し、export コマンドを用いて環境変数を設定・表示・確認します。
環境変数は、シェルから起動される子プロセスにも引き継がれる変数 です。
これにより、ログインシェル全体やアプリケーション間で共通設定を共有することが可能になります。
シェル変数と環境変数の違い
| 種類 | 有効範囲 | 設定コマンド | 子プロセスへの引き継ぎ | 代表的な例 |
|---|---|---|---|---|
| シェル変数 | 現在のシェル内でのみ有効 | 変数名=値 | 引き継がれない | var, PS1 |
| 環境変数 | 現在のシェルとその子プロセスに有効 | export 変数名=値 | 引き継がれる | PATH, LANG, HOME |
この表から分かるように、export によってシェル変数を環境変数として登録することで、
その値を新しいシェルやプロセスでも利用できるようになります。

演習問題+模範解答例
演習01:シェル変数と環境変数の違いを確認する
問題
シェル変数と環境変数を設定し、サブシェルを起動してそれぞれの有効範囲を確認してください。
模範解答例
# シェル変数の設定
[suzuki@AlmaLinux ~]$ shell_var='shell var'
[suzuki@AlmaLinux ~]$ echo $shell_var # シェル変数の内容を表示
shell var # シェル変数の出力
# 環境変数への設定
[suzuki@AlmaLinux ~]$ export env_var='env var'
[suzuki@AlmaLinux ~]$ echo $env_var # 環境変数の内容を表示
env var # 環境変数の出力
[suzuki@AlmaLinux ~]$ bash # 新しいサブシェルを起動
[suzuki@AlmaLinux ~]$ echo $shell_var # シェル変数の内容を表示
# シェル変数はサブシェルで参照できない
[suzuki@AlmaLinux ~]$ echo $env_var # 環境変数の内容を表示
env var # 環境変数の出力
[suzuki@AlmaLinux ~]$ env_var='env var change' # 環境変数の変更
[suzuki@AlmaLinux ~]$ exit # サブシェルを終了
exit
# 元のシェル
[suzuki@AlmaLinux ~]$ echo $env_var # 環境変数の内容を表示
[suzuki@AlmaLinux ~]env var # 値の変更が反映されていない解説

- シェル変数 shell_var は、現在のシェル内でのみ参照可能。
- export を使って登録した環境変数 env_var は、サブシェル(新しいbashプロセス)でも利用可能。
- ただし、サブシェルで変更した環境変数の値は、親シェルには反映されません。
演習02:環境変数を表示する
問題
現在設定されているすべての環境変数を表示してください。
模範解答例
[suzuki@AlmaLinux ~]$ env
SHELL=/bin/bash
SESSION_MANAGER=local/unix:@/tmp/.ICE-unix/2115,unix/unix:/tmp/.ICE-unix/2115
COLORTERM=truecolor
HISTCONTROL=ignoredups
XDG_MENU_PREFIX=gnome-
HISTSIZE=1000
HOSTNAME=AlmaLinux
(省略)解説
- env コマンドは、現在のシェル環境に設定されているすべての環境変数を一覧表示します。
- システム起動時に設定される変数(PATH, HOME, LANGなど)も含まれます。
- 出力結果には現在のユーザー情報やGUIセッション関連の変数も表示されます。
演習03:printenvコマンドで特定の環境変数を確認する
問題
環境変数のうち、HOME と PATH の内容だけを確認してください。
模範解答例
[suzuki@AlmaLinux ~]$ printenv HOME
/home/suzuki
[suzuki@AlmaLinux ~]$ printenv PATH
/home/suzuki/.local/bin:/home/suzuki/bin:/usr/local/bin:
/usr/local/sbin:/usr/bin:/usr/sbin解説
- printenv は env と似ていますが、特定の変数名を指定して表示 することができます。
- 何も指定しない場合は全変数を表示します。
- printenv HOME とすることで、HOME 環境変数のみが出力されます。
演習04:シェル変数と環境変数をまとめて表示する
問題
現在のシェル変数と環境変数をすべて表示してください。
模範解答例
[suzuki@AlmaLinux ~]$ set
BASH=/usr/bin/bash
(省略)
HISTCONTROL=ignoredups
HISTFILE=/home/suzuki/.bash_history
HISTFILESIZE=1000
HISTSIZE=1000
HOME=/home/suzuki
HOSTNAME=AlmaLinux
HOSTTYPE=x86_64
IFS=$' \t\n'
LANG=ja_JP.UTF-8
LESSOPEN='||/usr/bin/lesspipe.sh %s'
LINES=22
LOGNAME=suzuki
(省略)解説
- set コマンドは、シェル変数と環境変数の両方 を一覧表示します。
- 非常に多くの情報が出力されるため、less や grep で絞り込むと便利です。
例:set | grep HOME
まとめ
「新Linuxコマンド演習31」では、
- シェル変数 と 環境変数 の違い
- export による環境変数の設定
- env・printenv・set コマンドの活用
を学びました。
環境変数は、プログラムやシェルの動作に大きな影響を与えるため、
システム管理やスクリプト作成では特に重要な要素です。
次のステップとして、これらを永続化するための設定ファイル(.bashrc や .bash_profile)について学ぶとよいでしょう。
