目標
- 「シェル変数」と「環境変数」ついて理解する
「シェル変数」と「環境変数」
シェル変数(Shell Variables)
シェル変数は、シェル内で使用される変数で、主にシェルスクリプトやインタラクティブなシェルセッションで使われます。シェル変数はシェルプロセス内で有効であり、そのシェルを終了すると値も失われます。
# 変数の定義
VAR="Hello, World!"
# 変数の値を表示
echo $VAR
ここで、VARはシェル変数であり、シェルが実行されている間のみ有効です。
シェル変数には次の特徴があります。
- シェル内で有効:そのシェルのセッション内だけで使用できます。
- プロセスごとに異なる:別のシェルプロセスではその値にアクセスできません。
- 環境変数に昇格可能:シェル変数を環境変数に昇格させることができます。
環境変数(Environment Variables)
環境変数は、システム全体またはプロセス間で共有される変数です。これらの変数は、シェルが開始されたときに設定されるか、ユーザーによって設定され、システム全体でアクセス可能です。環境変数は、アプリケーションやシステムの設定に影響を与え、他のプロセスからも参照されます。
# 環境変数の設定
export MY_VAR="Hello from the environment!"
# 環境変数の値を表示
echo $MY_VAR
環境変数には次の特徴があります。
- プロセス間で共有:一度設定すると、その変数は子プロセスでも有効です。例えば、あるシェルスクリプトで設定した環境変数は、そのスクリプトから起動されたプログラムで参照可能です。
- システム全体に影響:環境変数は、システムの動作やアプリケーションの挙動に影響を与えることがよくあります(例:PATH、HOME、USERなど)。
- プロセスが終了すると失われる:環境変数はシェルセッションが終了すると消えますが、システム全体の設定である場合、システム再起動後も保持されることがあります。
シェル変数から環境変数への移行(昇格)
シェル変数はデフォルトではそのシェルセッション内でのみ有効ですが、export コマンドを使って、シェル変数を環境変数に昇格させることができます。これにより、その変数は子プロセスにも引き継がれるようになります。
# シェル変数の設定
MY_VAR="Hello"
# 環境変数として昇格
export MY_VAR
# 子プロセスでもアクセス可能
echo $MY_VAR # "Hello" が表示される
Linuxをサーバーとして利用する場合、環境変数はシステムが読み込む変数としてとても便利です。次はJavaアプリケーションで利用する値を、Ubuntuの環境変数に設定して利用しているhowahowablogの記事です。ここでは、nanoエディタを利用して設定しています。
このように、アプリケーションをデプロイする時に、プログラム内にあった重要な値をコンピュータに設定することで、安全に扱うことができます。

記事内の画面キャプチャ

よく利用される環境変数
環境変数 | 説明 |
---|---|
EDITOR | デフォルトのエディタのパス |
HISTFILE | コマンド履歴を格納するファイル |
HISTSIZE | コマンド履歴の最大数 |
HOME | カレントユーザー(現在のユーザー)のホームディレクトリ |
HOSTNAME | ホスト名 |
LANG | ロケール(言語処理方式) |
LOGNAME | ログインシェルのユーザー名 |
PATH | コマンドやプログラムを検索するディレクトリリスト |
PS1 | プロンプトの表示文字列 |
PS2 | 複数行にわたる入力時のプロンプト |
PWD | カレントディレクトリ(現在のディレクトリ) |
TERM | 端末の種類 |
USER | 現在のユーザー名 |
変数の設定と参照方法
シェル変数の設定
変数の定義では、=の前後にスペースを入れてはいけません。
変数名=値
シェル変数から環境変数への移行(昇格)
export コマンドは、シェル変数を環境変数に昇格させるために使用します。これにより、シェルプロセス内で設定した変数を、子プロセスや他のシェルで利用できるようにします。
export 変数名[=値]
変数の参照
変数を参照するには、変数名の前に $ を付けます。
echo $変数名
変数の表示コマンド
env コマンド: 定義されている環境変数を一覧で出力します。
env
printenv コマンド: 定義されている環境変数を一覧で出力します。
printenv
env は環境変数を設定・変更した上で出力もできますが、printenv は単に環境変数を表示するのみです。次のように envコマンドを利用して変数の値を設定して、一覧表示を実行することができます。このとき、変数は一時的な変更となります。
env VAR=sample command
このコマンドは、環境変数 VAR を設定した状態で command を実行します。
set コマンド:シェル変数、環境変数、関数の一覧を表示します。
set
今回は以上になります。

ブックマークのすすめ
「ほわほわぶろぐ」を常に検索するのが面倒だという方はブックマークをお勧めします。ブックマークの設定は別記事にて掲載しています。

