env

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内検索

env(エンブ)は UNIXオペレーティングシステムで使われるユーティリティである。環境変数のリストを出力したり、現在の環境を変えることなく変更された環境の下で他のユーティリティを実行するのに使われる。env を使うことで、変数の追加や削除、変数の値の変更を行える。

上記のような本来の目的以外に、インタプリタを起動するための一種のトリックによく使われる。スクリプトインタプリタの起動を仲介する目的に使われ、その用途では、通常、環境に手を加えることはしない。

[編集]

通常の用法[編集]

新しいシェルに対して環境をクリアするには

env -i /bin/sh

X Window System アプリケーション xcalc を起動し、それが違うディスプレーに表示されるようにするには

env DISPLAY=foo.bar:1.0 xcalc

トリック的用法[編集]

Unix の shebang では、通常インタプリタのフルパスを与える必要がある。しかし、Unixの環境では、標準のプログラムは /usr/bin に、ローカルで追加したプログラムは /usr/local/bin に置かれる、といった理由から、インタプリタのフルパスが一定でない場合がある。

以下に非常に単純な Python スクリプトを示す。

#!/usr/bin/env python
print "Hello World."

この例のように、インタプリタの代わりに env を指定することで、スクリプトの実行時に PATH からインタプリタが検索され実行される。これによりスクリプトが、より多くの環境で、shebang に手を入れなくとも動く可能性が高くなる。一方で、PATH から検索されるために、例えばユーザのホームディレクトリの下にあるインタプリタが実行される等、思わぬ場所にあるインタプリタが実行される危険もある。

また env のフルパスはたいていは /usr/bin/env であるが、/usr という階層がなくフルパスが /bin/env であるという環境も無くはない[要出典]ため、このトリックを使用しても必ずしも万能ではない。

外部リンク[編集]