[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
env
: 変更した環境でコマンドを実行するenv
は、環境を変更して、コマンドを実行する。
書式:
env [option]… [name=value]… [command [args]…] env |
‘variable=value’ という形のオペランドは、環境変数 variable の値を value に設定する。value は空っぽでも構わない (‘variable=’)。 変数の値を空に設定 (set) するのは、変数を破棄 (unset) するのとは別のことである。 こうしたオペランドは、左から右へ評価されるので、二つのオペランドが同じ変数を対象にしている場合、前のものは無視される。
環境変数名は、空でもよいし、‘=’ と ASCII NUL 以外なら、どんな文字を含んでいても構わない。 とは言え、変数名は、アンダースコア、数字、ASCII 文字のみから構成し、 数字以外の文字で始めるようにした方が、賢明である。 それ以外の名前だと、シェルなどのアプリケーションがうまく動作しないからだ。
‘=’ という文字を含まない最初のオペランドが、起動するプログラムであり、
環境変数 PATH
に従って、どこにあるかが検索される。
残っている引数があれば、すべてそのプログラムに引数として渡される。
起動するプログラムは、シェルの組み込みコマンドであってはならない
(see section 特殊ビルトイン・ユーティリティ)。
PATH
に対する変更は、command のありかを検索する前に有効になる。
そこで、PATH
を短縮するときには、気をつけなければならない。
PATH
を未定義にしたり、‘/bin’
のような重要なディレクトリを外したりすると、変更前と同じ動作にならないかもしれないからだ。
めったにないことだが、プログラムの名前に ‘=’ という文字が含まれている場合、
それを変数の指定と区別する唯一の方法は、command として仲介的なコマンドを使用し、
その args として問題のあるプログラム名を渡すことである。
たとえば、‘./prog=’ が現在の PATH
中に存在する実行ファイルだとしよう。
env prog= true # 環境変数 prog を空に設定して 'true' を実行する。 env ./prog= true # 環境変数 ./prog を空に設定して 'true' を実行する。 env -- prog= true # 環境変数 prog を空に設定して 'true' を実行する。 env sh -c '\prog= true' # 'true' を引数にして 'prog=' を実行する。 env sh -c 'exec "$@"' sh prog= true # これも 'prog=' を実行する。 |
環境変数の設定の後にコマンド名が指定されていない場合は、生成された環境が表示される。
これは、command に printenv
を指定するのと同じことである。
以下に例をいくつか挙げる。env
に渡される環境は、‘LOGNAME=rms’,
‘EDITOR=emacs’, ‘PATH=.:/gnubin:/hacks’ からなっているものとする。
$ env | LC_ALL=C sort EDITOR=emacs LOGNAME=rms PATH=.:/gnubin:/hacks |
foo
を実行する。foo
が見つからないといけないので、
PATH
だけは元のまま残している。
env - PATH="$PATH" foo |
foo
を実行する。
foo
には、シェルの組み込みコマンドではなく、
ファイルシステム中で見つかった実行ファイルが必ず使用される。
env foo |
nemacs
を実行する。
env DISPLAY=gnu:0 LOGNAME=foo nemacs |
/energy/--
の実行を試みる (パスの検索でそれしか出てこないようにしている)。
--
というコマンドが存在する場合、環境は、‘LOGNAME=rms’ と
‘PATH=/energy’ だけになり、引数には、‘e=mc2’,
‘bar’, ‘baz’ が使われる。
env -u EDITOR PATH=/energy -- e=mc2 bar baz |
このプログラムでは以下のオプションが使用できる。参照: 共通オプション. オプションはオペランドの前に置かなければならない。
各行の末尾に改行ではなく、ゼロバイト (ASCII NUL) を出力する。このオプションを使用すると、出力するデータの途中に改行が現れる場合でも、 他のプログラムがその出力を解析できるようになる。
変数 name が環境中にあれば、それを環境から削除する。
継承した環境を無視し、空っぽの環境から始める。
終了ステータス:
0: command が指定されなかったので、環境を出力した。
125: |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This document was generated on June 7, 2022 using texi2html 1.82.