日本語 man コマンド類 (ja-man-1.1j_5) と日本語 man ドキュメント (ja-man-doc-5.4 (5.4-RELEASE 用) など) をインストールすると、以下のような man コマンド閲覧、キーワード検索が コンソールからできるようになります。
4.11-RELEASE-K, 5.4-RELEASE-K, 5.5-RELEASE-K, 6.0-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K, 12.1-RELEASE-K は、 プライベート版 (小金丸が編集してまとめたもの) ですが、 より多くの翻訳したファイルが含まれています。 (5.4-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K から 12.3-RELEASE-K, 13.0-RELEASE-K から 13.2-RELEASE-K は、全翻訳済み)
13.3-STABLE-K, 15.0-CURRENT-K は現在、作成中で日々更新されています。
Table of Contents
ENV(1) FreeBSD 一般コマンドマニュアル ENV(1) 名称 env -- 環境変数を設定してコマンドを実行するか、または環境変数を印刷 (表 示) する 書式 env [-iv] [-P altpath] [-S string] [-u name] [name=value ...] [utility [argument ...]] 解説 env ユーティリティは、コマンド行で指定された環境変数の値を変更してから、 別の utility (ユーティリティ) を実行します。各 name=value オプションは環 境変数 name を value 値に設定することを指定します。そのような環境変数は、 utility が実行される前に設定されます。 オプションは次の通りです: -i name=value オプションによって指定される、それらの環境変数のみとと もに utility を実行します。env は完全に無視されます。 -P altpath PATH 環境変数の値を使用する代わりに、指定された utility プログラ ムの位置を見つけるのに、altpath によって指定される一連のディレク トリを検索します。 -S string 与えられた string (文字列) を複数の文字列に分解し、env ユーティリ ティへの別々の引数として結果のそれぞれの文字列を処理します。-S オ プションは、以下で説明されるように、いくつかの特殊文字エスケープ シーケンスを認識して、環境変数の置き換えをサポートします。 -u name 環境変数 name が、環境 (environment) にあるなら、残っているオプ ションを処理する前に、それを削除します。これは、sh(1) の unset コ マンドと同様です。name のための値は、`=' 文字を含んではいけませ ん。 -v env ユーティリティによって行われた処理の各段階について、冗長な情 報を印刷 (表示) します。-v が複数の回指定されるなら、追加情報が印 刷 (表示) されます。 上記のオプションは、それらが name=value オプションの前に指定されるときだ け認識されます。 utility が指定されないなら、env は 1 行毎に 1 つの name/value の組で、環 境変数の名前 (name) と値 (value) を印刷 (表示) します、 -S (文字列分割) 処理の詳細 -S オプション処理は与えられた string を、string で見つけられた任意の空白 と <タブ> 文字に基づいて別々の引数に分割します。それらの新しいそれぞれの 引数は、元の env コマンドで別々の引数として指定されたかのように取り扱われ ます。 空白とタブは、シングルクォート (``''') か、ダブルクォート (`"') か、また はバックスラッシュ (`\') を使用してそれらの新しい引数の 1 つに埋め込むこ とができます。シングルクォートは、次に一致するシングルクォートまでの、シ ングルクォート以外の文字をエスケープします。ダブルクォートは、次に一致す るダブルクォートまでの、ダブルクォート以外の文字をエスケープします。一致 するクォート文字の前に string の終りに到達するなら、エラーです。 -S が `#' 文字で始まる新しい引数を作成するなら、その引数と string の残り は無視されます。`\#' シーケンスは、新しい引数を `#' 文字で始めたいとき、 string の残りがスキップされずに、使用することができます、 string 値を処理している間に、-S 処理は何らかの動作を取るために表されるエ スケープシーケンスとして特定の文字の組み合わせを取り扱います。文字エス ケープシーケンスはバックスラッシュ表記法です。文字とそれらの意味は次の通 りです: \c string に残っている文字を無視します。これはダブルクォート文 字列の中に現れてはいけません。 \f フォームフィード <form-feed> 文字に置き換えます。 \n 復帰改行 <new-line> 文字に置き換えます。 \r 復帰 <carriage return> 文字に置き換えます。 \t タブ文字に置き換えます。 \v 垂直タブ文字に置き換えます。 \# `#' 文字に置き換えます。与えられた string を分割することに よって作成された引数の 1 つの最初の文字として `#' が必要で あるときに役に立ちます。 \$ `$' 文字に置き換えます。 \_ ダブルクォート文字列の中にこれが見つけられるなら、単一の空 白に置き換えます。クォート文字列の外でこれが見つけられるな ら、元の string の新しい引数の間の分離文字として取り扱われ ます。 \" ダブルクォート文字に文字に置き換えます。 \' シングルクォート文字に置き換えます。 \\ バックスラッシュ文字に置き換えます。 シングルクォート文字列の中で認識される唯一のシーケンスは、シングルクォー トとバックスラッシュのためのシーケンスです。他のシーケンスはシングル クォート文字列の中では、特別な意味はありません。ダブルクォート文字列の中 では、すべてのエスケープシーケンスが認識されます。単一の `\' 文字が上記に リストされたもの以外の文字に続くなら、エラーです。 また、-S の処理は環境変数の値の置き換えをサポートします。これを行うために は、環境変数の名前は、次のように `${}' の内側になければなりません: ${SOMEVAR}。$SOMEVAR のような一般的なシェルの構文はサポートされていませ ん。置き換えられたすべての値は、それらが、元の env ユーティリティが呼び出 されたときの環境変数の値になります。それらの値は、上記に説明されるような エスケープシーケンスのチェックは行われません。また、name=value の任意の設 定は、-S 処理における置き換えのために使用される値に影響しません。 また、-S 処理は、ほとんどのシェルによって定義されている特殊パラメータの値 を参照することができません。例えば、-S は次のような特殊パラメータを認識す ることができません: 与えられた string の内側に現れるなら、`$*', `$@', `$#', `$?' または `$$'。 シェルスクリプトでの使用 env ユーティリティは、execve(2) で説明されるように、解釈されるスクリプト の最初の行で、interpreter (インタプリタ) としてしばしば使用されます。 解釈されるスクリプトの (最初の行の) `#!' をカーネルが解析する方法は、 FreeBSD 6.0 で変更されたことに注意してください。それ以前の、FreeBSD カー ネルは、最初の行を行内で見つかる空白類 (空白または <タブ> 文字) を基に別 々の引数に分割します。したがって、/usr/local/bin/someport と名前が付けら れたスクリプトの最初の行が、次の場合: #!/usr/local/bin/php -n -q -dsafe_mode=0 /usr/local/bin/php プログラムは、次の引数で起動されるでしょう: arg[0] = '/usr/local/bin/php' arg[1] = '-n' arg[2] = '-q' arg[3] = '-dsafe_mode=0' arg[4] = '/usr/local/bin/someport' これに、someport を実行するとき、ユーザが指定した任意の引数が追加されま す。しかしながら、この `#!' 行での複数のオプションの処理は、いかなる他の オペレーティングシステムでも解釈されるスクリプトの最初の行を解析する方法 として行われていません。したがって、FreeBSD 6.0 リリースのために行われた 変更の後では、そのスクリプトは、次の引数で /usr/local/bin/php を開始する ようになります: arg[0] = '/usr/local/bin/php' arg[1] = '-n -q -dsafe_mode=0' arg[2] = '/usr/local/bin/someport' これにユーザが指定した任意の引数が追加されます。これはいくつかのスクリプ トの振る舞いで著しい変化をもたらします。上記のスクリプトの場合では、 FreeBSD 6.0 の下で以前のリリースと同じような振る舞いを行うためには、最初 の行を次のように変更するべきです: #!/usr/bin/env -S /usr/local/bin/php -n -q -dsafe_mode=0 env ユーティリティはただ一つの引数として全体の行で開始されます: arg[1] = '-S /usr/local/bin/php -n -q -dsafe_mode=0' そして、/usr/local/bin/php. を実行する前に、-S 処理はその行を別々の引数 に分割します。 環境変数 env ユーティリティは、名前に `/' 文字が含まれず、-P オプションが指定され ていないなら、要求された utility の場所を見つけるために PATH 環境変数を使 用します。 終了ステータス ユーティリティ env は、成功すると 0 で、エラーがあった場合は >0 で終了し ます。終了ステータス 126 は、utility は見つけられましたが、実行することが できなかったことを示します。終了ステータス 127 は、utility を見つけること ができなかったことを示します。 使用例 env ユーティリティが解釈されるスクリプトの最初の行の一部としてしばしば使 用されるので、次の例は、env ユーティリティがスクリプトで役に立つことがで きる多くの方法を示します。 解釈されるスクリプトのカーネルでの処理は、それ自体のインタプリタとして直 接ある他のスクリプトを参照するスクリプトを許していません。これを回避する 方法として、 #!/usr/local/bin/foo と #!/usr/bin/env /usr/local/bin/foo の主な違いは、後者が /usr/local/bin/foo がそれ自体で解釈されるスクリプト であっても動作することです。 たぶん env の最も一般的な使用法は、インタプリタが異なったシステム上で異 なったディレクトリにあるかもしれないとき、スクリプトに対して正しいインタ プリタを見つけることです。次の例は、PATH によって指定された (複数の) ディ レクトリを検索することによって `perl' インタプリタを見つけます。 #!/usr/bin/env perl その例の 1 つの制限は、PATH のためのユーザの値が実行したいインタプリタを 見つける値に設定されていると仮定することです。特定のディレクトリのリスト が utility を検索するため使用されるのを確認するために -P オプションを使用 することができます。また -S オプションは、この例が正しく動作するために必 要であることに注意してください。 #!/usr/bin/env -S -P/usr/local/bin:/usr/bin perl 上記は、/usr/local/bin または /usr/bin にある場合のみ、`perl' を見つけま す。より多くの柔軟性を提供するために PATH の現在の値と組み合わせることも できるでしょう。-S と -P オプションの間に空白が必要でないことに注意してく ださい: #!/usr/bin/env -S-P/usr/local/bin:/usr/bin:${PATH} perl 互換性 env ユーティリティは、-i の同義語として - オプションを受け付けます。 関連項目 printenv(1), sh(1), execvp(3), environ(7) 規格 env ユーティリティは、IEEE Std 1003.1-2001 (``POSIX.1'') に適合していま す。-P, -S, -u と -v オプションは、FreeBSD によってサポートされている標準 でない拡張ですが、他のオペレーティングシステムで利用可能でないかもしれま せん。 歴史 env コマンドは、4.4BSD で登場しました。-P, -S と -v オプションは、 FreeBSD 6.0 で追加されました。 バグ env ユーティリティは、明白な理由で、それらの名前に等号 (`=') がある utility の値を取り扱いません。 いくつかのロケールで不正確な結果をもたらすかもしれない -S オプションを処 理するとき、env ユーティリティは、マルチバイト文字を考慮に入れません。 FreeBSD 11.2 April 17, 2008 FreeBSD 11.2