envVoid Linuxマシン上のコマンド。 | |
| オペレーティング·システム | Unix、Unix ライク、インフェルノ |
|---|---|
| プラットフォーム | クロスプラットフォーム |
| タイプ | 指示 |
| ライセンス | コアユーティリティ: GPLv3+ |
envは、 UnixおよびUnix 系オペレーティング システム用のシェル コマンドです。これは、環境変数のリストを印刷したり、現在の環境を変更することなく変更された環境で別のユーティリティを実行したりするために使用されます。を使用すると、変数を追加または削除したり、新しい値を割り当てることで既存の変数を変更したりできます。
env
実際には、 には別の一般的な用途があります。シェル スクリプトで正しいインタープリターをenv起動するために使用されることがよくあります。 この使用法では、環境は通常変更されません。
歴史
GNU coreutilsenvにバンドルされているバージョンは、Richard Mlynarik、David MacKenzie、Assaf Gordonによって書かれました。[1]これは4.4BSDで初めて登場し、POSIX.1の一部です(-iオプションのみ)。[2]
GNU のenv はシグナルと現在のディレクトリを処理できるように拡張されています。[1] FreeBSDのenv はカスタム検索パスをサポートしています。両方のバージョンにある拡張機能には、変数の設定を解除する-uと、引数を分割する (主にシェバン) -Sがあります。 [2]
例
現在の環境変数のセットを出力するには:
環境
新しいシェルに既存の環境変数なしで新しい環境を作成するには:
env -i /bin/sh
Xアプリケーションxcalcを実行し、別のディスプレイに表示するには (つまり、指定した環境変数が新しい値に置き換えられるかどうかに関係なく、変更された環境で)、次のようにします。
env DISPLAY = foo.bar:1.0 xcalc
ほとんどのシェルはコマンドの前に環境変数を設定できるため、env の使用は多くの場合不要であることに注意してください。
表示= foo.bar:1.0 xcalc
env はスクリプトのハッシュバン行で使用して、PATH 経由でインタープリターを検索できるようにすることもできます。たとえば、以下はPythonスクリプトのコードです。
#!/usr/bin/env python3
print ( "Hello, World!" )
この例では、はコマンドの/usr/bin/envフルパスです。env環境は変更されません。
envなお、 を使用せずに、インタープリタのフルパスを指定することもできますpython。この方法の問題点は、コンピュータ システムによって正確なパスが異なる可能性があることです。代わりにenv例のように を使用すると、スクリプトの実行時にインタープリタが検索され、特定されます (より正確には、envは へのシステム コールを実行しexecvp、インタープリタを特定して起動します)。これにより、スクリプトの移植性は高まりますが、実行可能ファイルの検索パスにあるすべてのディレクトリで一致するものを検索するため、間違ったインタープリタが選択されるリスクも高まります。また、envバイナリへのパスもマシンごとに異なる可能性があるという同じ問題もあります。
