printenv、env、set、exportコマンドの違いに関して

スポンサード リンク

CentOS / Redhat Enterprise Linux における変数関連のコマンドを紹介します。

(*)bash を想定しています。他のシェルでは動作が異なる可能性が高いので注意してください。

参考:シェル変数と環境変数の違い

シェル変数:シェル内のみ有効
環境変数:子シェル、シェルから実行したプログラムにも引き継がれる変数。

スポンサード リンク

(注意)分かりやすく簡単に記載しており、一部の環境や分野では記載内容が異なる可能性があります。あくまでも参考程度でお読みください。

比較表

比較は以下の表の通りとなります。

説明printenvenvsetexport
概要・環境変数の一覧を出力。
・環境変数の一覧を出力。
・特定コマンドのみ有効な環境変数を設定。(下の欄で紹介しているコマンドを参照)
・シェル変数と環境変数の一覧を表示

(*)シェル変数を設定するには以下のような記載。他のシェルだと異なるので注意。

<変数名> = <値>

シェル変数を表示するには $を付ける。
echo $<変数名>
・環境変数の一覧を表示
・環境変数を設定

環境変数を表示するには $を付ける。
echo $<変数名>
環境変数対応〇(環境変数が表示される)
〇(環境変数が表示される)
〇(環境変数が表示される)
-
シェル変数対応×(シェル変数は表示されない)
×(シェル変数は表示されない)
〇(シェル変数は表示される)
-
備考-env は特定コマンドのみ変数を設定する便利な機能があり。以下はenv LANG=Cで date コマンド実行時のみ言語を変更している。

# env LANG=C date
Tue Apr 3 16:07:10 JST 2018

# date
2018年 4月 3日 火曜日 16:07:06 JST
--








【注意】本ページは著作権で保護されています。内容は何人も補償しません。時間的あるいは金銭的損失等、一切保証しません。

理解しやすく記載されており、一部不正確な記載がある可能性があります。ご自身の責任で参考にしてください。