bashシェルを使用してexportした変数(環境変数)とシェル変数の動作の違いを以下に記します。
OSはCentOSを使用しました。
端末を起動し、下記の順序でシェル変数を設定して新しく起動したプロセスからシェル変数が参照できるかを確認します。
[sakura@centos6 ~]$ ABC=ALPHABET [sakura@centos6 ~]$ echo $ABC
[sakura@centos6 ~]$ cat env1.sh #!/bin/bash echo $ABC [sakura@centos6 ~]$ chmod +x env1.sh [sakura@centos6 ~]$ ./env1.sh [sakura@centos6 ~]$ echo $ABC ALPHABET
上記のことからわかるように、同一プロセス上でシェル変数が有効になっているのがわかります。
端末を起動し、下記の順序で環境変数を設定して新しく起動したプロセスから環境変数が参照できるかを確認します。
[sakura@centos6 ~]$ export AIUEO=JAPANESE [sakura@centos6 ~]$ echo $AIUEO JAPANESE
[sakura@centos6 ~]$ cat env2.sh #!/bin/bash echo $AIUEO [sakura@centos6 ~]$ chmod +x env2.sh [sakura@centos6 ~]$ ./env2.sh JAPANESE
尚、別端末を起動し、env2.shを起動しても環境変数(AIUEO)は表示されません。
以下のC言語のサンプルは、環境変数AIUEOを取得するサンプルです。
getenv関数により環境変数を取得することができます。
#include <stdio.h> #include <stdlib.h> int main(void) { char *env; env = getenv( "AIUEO" ); printf( "%s¥n", env ); return 0; }