env

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

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

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

[編集]

通常の用法[編集]

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

env -i /bin/sh

X Window System アプリケーション xcalc を起動し、異なるディスプレイに表示させるには

env DISPLAY=foo.bar:1.0 xcalc

トリック的用法[編集]

Unix の shebang では通常は、インタプリタのフルパスを与える必要がある。しかし Linux や Unix では、標準のプログラムを /usr/bin に、管理者が独自に追加したプログラムを /usr/local/bin に置いて区別して管理する(FHS)といった理由などから、インタプリタのフルパスがシステムにより異なる。そのため、インタプリタのフルパスを直接に記述すると、そのシェルスクリプトに汎用性がなくなる(他のシステムでは動かない可能性がある)。そこで、(インタプリタ自体があらかじめ環境変数 PATH で指定されているディレクトリに置いてあることを前提に、)フルパスではなく単なるコマンド名を記述して env に実行させれば、汎用性が保てる。

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

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

この例のように、インタプリタの代わりに env を指定することで、スクリプトの実行時に PATH からインタプリタが検索され実行される。これにより同じスクリプトが、より多くの環境で動く可能性が高くなる。一方で、PATH から検索されるために、例えばユーザのホームディレクトリの下にある同名のプログラムが実行されるなど、同名の異なるプログラムが意図せず実行される危険もある。

なお、 env は /usr/bin に置いてあることも /bin に置いてあることもあるが、/usr/bin/env と書いても /bin/env と書いても実行されることを保証するため、シンボリックリンクを張るなどして解決してあることが多い。

外部リンク[編集]