12-LPIC「level1」

LPIC|level 1【シェル変数と環境変数】

目標

  • 「シェル変数」と「環境変数」ついて理解する

「シェル変数」と「環境変数」

シェル変数(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エディタを利用して設定しています。

このように、アプリケーションをデプロイする時に、プログラム内にあった重要な値をコンピュータに設定することで、安全に扱うことができます。

Javaシステム(サーブレット&JSP)をデプロイする方法|VirtualBoxで、Webサーバー、アプリケーションサーバー、データベースサーバー、DNSサーバーの4つをUbuntuを利用して構築する手順を記事にしています。 前提条件 VirtualBoxがインストール済である。 各サーバーにUbuntuがインストール済みである。 各サーバーがインターネット接続可能。 各サーバーは仮想ネットワークに接続されている。(例: ブリッジ接続または内部ネットワーク)...

記事内の画面キャプチャ

よく利用される環境変数

環境変数説明
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

今回は以上になります。

「Linux」おすすめ書籍6選【初心者・脱初心者用】| 現役エンジニア&プログラミングスクール講師「Linux」初心者の方がLinuxの操作や仕組みを理解するためのお勧めの書籍について取り上げています。また中級者として更に進んだ学習ができる書籍についても1冊取り上げています。ページの下部には「おすすめのITスクール情報」「おすすめ求人サイト」について情報を掲載中。...

ブックマークのすすめ

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

「お気に入り」の登録・削除方法【Google Chrome / Microsoft Edge】「お気に入り」の登録・削除方法【Google Chrome / Microsoft Edge】について解説している記事です。削除方法も掲載しています。...
【パソコン選び】失敗しないための重要ポイント | 現役エンジニア&プログラミングスクール講師【パソコン選び】失敗しないための重要ポイントについての記事です。パソコンのタイプと購入時に検討すべき点・家電量販店で見かけるCPUの見方・購入者が必要とするメモリ容量・HDDとSSDについて・ディスプレイの種類・バッテリーの持ち時間や保証・Officeソフト・ウィルス対策ソフトについて書いています。...
RELATED POST