Linux export 環境変数とシェル変数の違い

Linuxの環境変数とシェル変数の違いのサンプルです。(Linux,CentOS7)

目次

サンプル 環境変数とは
  環境変数の確認
  シェル変数の確認
  子プロセスになったbashを確認

環境変数とは

  • 環境変数は子プロセスからも参照できます。
  • シェル変数はそのシェル内のみ有効です。
  • シェル変数をexportすると環境変数になります。
  • printenvコマンドで環境変数の値を表示できます。

 

環境変数の確認

最初にシェル変数に値を入れ、exportして環境変数にします。

[test@localhost ~]$ COLOR1="red"
[test@localhost ~]$ echo $COLOR1
red
[test@localhost ~]$ export COLOR1
[test@localhost ~]$ bash
[test@localhost ~]$ echo $COLOR1
red
[test@localhost ~]$
[test@localhost ~]$ COLOR1="blue"
[test@localhost ~]$ echo $COLOR1
blue
[test@localhost ~]$ exit
exit
[test@localhost ~]$ echo $COLOR1
red
[test@localhost ~]$

2行目は、シェル変数の値を表示しています。
4行目は、exportで環境変数にしています。
5行目は、bashコマンドで子プロセスになります。
6行目は、子プロセスでも3行目と同じ値が表示されます。
9行目は、値を変更しました。
12行目で、子プロセスを終了します。
14行目は、子プロセスでの変更は親プロセスには反映されません。

 

シェル変数の確認

[test@localhost ~]$ COLOR2="green"
[test@localhost ~]$ echo $COLOR2
green
[test@localhost ~]$ bash
[test@localhost ~]$ echo $COLOR2

[test@localhost ~]$ exit
exit
[test@localhost ~]$ echo $COLOR2
green
[test@localhost ~]$

2行目は、シェル変数の値を表示しています。
4行目は、bashコマンドで子プロセスになります。
5行目の子プロセスでは、シェル変数の値は表示されません。
9行目の親プロセスではシェル変数の値は表示されます。

 

子プロセスになったbashを確認

bashコマンドは子プロセスになります。
psコマンドで親子関係を確認します。

[test@localhost ~]$ ps -ef | head -1 && ps -ef | grep bash
UID         PID   PPID  C STIME TTY          TIME CMD
test       2954   2943  0 04:25 pts/0    00:00:00 bash
test       3670   2954  0 04:43 pts/0    00:00:00 bash
[test@localhost ~]$ 

3行目のPIDの2954が親です。
4行目のPIDの3670が子です。
4行目のPPIDは2954の親プロセスを指します。

関連の記事

CentOS コマンド一覧 (Linux)

△上に戻る