Envとはどんな拡張子? わかりやすく解説 Weblio辞書 (original) (raw)

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

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

通常の用法

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

env -i /bin/sh

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

env DISPLAY=foo.bar:1.0 xcalc

トリック的用法

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

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

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

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

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

脚注

  1. ^ 後藤大地 (2018年6月20日). “/usr/bin/envを使って移植性の高いスクリプトを書く方法”. TECH+(テックプラス). 2023年9月26日閲覧。

外部リンク

Unixコマンド
ファイルとファイルシステム管理 cat chmod chown chgrp cksum cmp cp dd du df(英語版file fsck fuser(英語版ln ls lsof mkdir mount mv pax pwd rm rmdir size split tee touch type(英語版) umask(英語版
プロセス管理 at bg chroot cron fg kill killall nice pgrep pidof pkill ps pstree(英語版reboot shutdown time top
ユーザ管理/環境 clear env exit finger history(英語版id logname(英語版mesg passwd su sudo uptime talk tput(英語版uname w wall who whoami write
テキスト処理 awk banner basename comm(英語版) csplit(英語版cut diff dirname ed ex(英語版fmt fold(英語版head iconv join(英語版less more nkf nl paste(英語版printf sed sort spell(英語版strings tail tr uniq vi wc xargs yes
シェルビルトイン alias cd echo test(英語版unset wait
通信 dig host(英語版ifconfig inetd ip (iproute2) netcat netstat nslookup ping rdate(英語版rlogin route ssh traceroute
検索 find grep locate(英語版) whatis(英語版) whereis(英語版
マニュアル apropos(英語版) help(英語版man
その他 bc dc cal date expr false lp(英語版lpr od sl sleep stty true tty
Category:UNIXのソフトウェア UNIXユーティリティの一覧