PR
 シェル・スクリプト・リファンレス
コマンド集(機能別) | コマンド集(アルファベット順) | コマンド逆引き大全 | シェル・スクリプト・リファンレス

 環境変数の定義方法

 「変数名=値」のように変数を定義すると,シェル変数として定義される。このシェル変数を環境変数に切り替えたい場合は「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」を実行する場合を考える。


#!/bin/sh

echo $My_Name

 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             ← 以前のシェル変数が保持されている