1. トップ
  2. 新着ニュース
  3. IT
  4. パソコン

窓辺の小石 第183回 The Environment variable Man

マイナビニュース / 2024年9月13日 15時34分

画像提供:マイナビニュース

WindowsやLinux/Unixなどには環境変数と呼ばれるものがある。環境変数は、シェルから起動されるプログラムに対して、何らかのテキスト情報を伝達するもの。現在の環境変数の元になったのは、Version 7 UNIXに搭載されたもの。すべてのプログラムからアクセス可能な変数とすることでさまざまな応用が可能になった。たとえば、アプリケーションのオプション設定値を環境変数で表現することで、毎回起動オプションを指定する必要がなくなった。あるいは、エディタを指定しておくことで、必要に応じて、ユーザーの好みのエディタプログラムを起動させることも可能になる。

もともとシェルには、変数があり、これを使うことで、シェルスクリプト間では値を渡すことができた。また、起動するコマンドの引数をシェル変数とすることで、パラメーターを引き渡すこともできた。この仕組みを汎用的に使えるようにシステム側の機能としたのが環境変数だ。プログラムはAPIを介して、環境変数から必要な情報を得るようにしたことで、汎用性が高まった。

UNIXの標準シェル(sh。Bourneシェル)では、「変数名=値」としてシェル変数を定義したあと、「export 変数名」というコマンドを使って、環境変数を定義する。後継となるbash(Bourne Againシェル)では、2つを併せて「export 変数名=値」とすることができる。

環境変数は、親となるプロセス側で設定を行い、親から起動されたプログラム(子プロセス)がこれを利用することができる。プロセスが起動されると、その実行環境に、親の環境変数がコピーされる。起動されたプロセスで自由に環境変数を書き換えてもいいが、プロセスが終了すると環境変数はどこにもコピーされることなく消えてしまう。環境変数による情報の伝達は、親から子への一方通行なのである。

これは、シェルのスクリプトについても適用される。通常、シェルからスクリプトを起動すると、シェル自身が子プロセスとして起動し、スクリプトを実行する。このため、スクリプトに環境変数を変更する記述を書いても実行が終われば消えてしまう。仕組みを聞けば、なるほどと理解するが、初めてシェルを使ったという状況では、簡単には想像できない。

1つには、多くのシェルには、初期設定を行うスクリプトが用意されていて、その中では、環境変数を自由に定義できる。これを見ると、スクリプトで環境変数を書き換えて環境を切り替えることができると思いがちだ。しかし、これらの初期設定スクリプトは、実行が終わっても起動されたシェルプロセスは終了せずに、プロンプトを出して、入力待ちになる。つまり、起動されたシェルがそのまま継続して動いているのである。

この記事に関連するニュース

トピックスRSS

ランキング

複数ページをまたぐ記事です

記事の最終ページでミッション達成してください