「変数名=値」のように変数を定義すると,シェル変数として定義される。このシェル変数を環境変数に切り替えたい場合は「export 変数名」というように定義する。たとえば,DATA_NAME変数を環境変数に変更する場合を考えよう。
$ DATA_FILE=document.dat
$ set | grep "DATA_FILE=" ← 何も表示されず,環境変数でないことが分る
$ export DATA_FILE ← 環境変数に切り替える
$ set | grep "DATA_FILE="
DATA_FILE=document.dat ← 環境変数に切り替えられた
|
また,「export 変数名=値」とすることで,環境変数を直接定義できる。
$ export DATA_FILE=document.dat
|
実行するコマンドやスクリプトなどに変数を引き渡したい場合は,exportで環境変数に切り替えてからコマンドを実行する。たとえば,以下のような変数My_Nameを閲覧する,シェル・スクリプト「see_My_Name.sh」を実行する場合を考える。
My_Nameに値を代入してシェル・スクリプトを実行すると,
$ My_Name=Fukuda
$ ./see_My_Name.sh
← 何も表示されない
|
結果には何も表示されず,see_My_Name.shにMy_Name変数の内容が引き渡されていないことが分かる。
そこで,環境変数に切り替えて実行すると,
$ export My_Name=Fukuda
$ ./see_My_Name.sh
Fukuda
|
のように変数がシェル・スクリプトに引き渡されていることが分かる。
次のようにしても,コマンドに変数を引き渡すことが可能だ。
$ My_Name=Kazuhiro ./see_My_Name.sh
Kazuhiro
|
ただし,この場合には,現在のシェル変数には指定した値は代入されない。
$ My_Name=Fukuda
$ My_Name=Kazuhiro ./see_My_Name.sh
Kazuhiro
$ echo $My_Name
Fukuda ← 以前のシェル変数が保持されている
|