概要
環境変数を一覧表示し、必要に応じて一時的に変更した環境でコマンドを起動します。スクリプト実行や挙動切り分けで非常に重要です。
基本構文
env [OPTION]... [NAME=VALUE]... [COMMAND [ARG]...]詳細解説
envは、シェルから子プロセスへ受け渡される環境変数を確認、加工、上書きするためのコマンドです。何も引数を付けなければ環境変数一覧を表示し、NAME=VALUEを並べてからコマンドを書くと、そのコマンドだけに一時的な環境を与えて実行できます。
実務では、PATH、LANG、LC_ALL、HOME、http_proxyのような環境変数が原因で挙動が変わる場面がよくあります。envを使うと、現在の環境を観察したり、汚れた環境を切り離して再現試験したりできます。
このコマンドを使う場面
現在の環境変数を確認したい時、一時的にLANGやPATHを変えてコマンドの挙動を確認したい時、不要な環境変数を外して不具合を切り分けたい時に使います。
まず安全に試す方法
1. env | sort | head
2. env LANG=C date
3. env -i PATH=/usr/bin:/bin sh -c "echo ok"
3分ミッション
少しでも手を動かすと定着しやすくなります。終わった項目にチェックを入れてください。
-
env | sort | lessで現在の環境を眺め、HOME、PATH、LANGを確認します。
-
env LANG=C dateと通常のdateを比較して表示差を確認します。
資格試験との関連
-
LinuC レベル1
範囲: 1.03.1 コマンドラインの操作根拠: officialLinuCレベル1では、コマンドライン操作やシェル環境の理解が問われます。envはその基礎を支える代表的なコマンドです。
-
LPIC-1
範囲: 105.1 シェル環境のカスタマイズと利用根拠: officialLPIC-1では、シェル環境、変数、履歴、コマンド解決の理解が重視されます。envはその周辺知識と一緒に学ぶ価値が高いコマンドです。
-
共通基礎
範囲: Linuxコマンド基礎根拠: editorial試験横断で、envはコマンドライン操作、手順読解、トラブルシュートの基礎体力を作る項目です。
実行結果サンプル
-
env | grep "^HOME="HOME=/home/user -
env LANG=C dateThu Apr 9 ...
戻り値コード
- 0 一覧表示に成功、または起動したコマンドが正常終了しました。
- 125 env自身の処理に失敗しました。GNU coreutils版で使われます。
- 126 コマンドは見つかったが実行できませんでした。
- 127 コマンドが見つかりませんでした。
使用例
envenv LANG=C dateenv -i PATH=/usr/bin:/bin sh -c "echo ok"env -u http_proxy curl https://example.com
よくあるエラー
-
env -iで実行したらコマンドが見つからない 原因: PATHも消えているためです。対処: PATH=/usr/bin:/binのように最小限のPATHを明示してから実行します。
導入・互換性情報
POSIXのenvは環境を変更して別コマンドを起動する基本機能を定義します。GNU coreutils版では--unset、--ignore-environment、--chdir、--split-stringなど拡張が追加されています。
- Debian GNU/Linux / 13 / GNU coreutils 9.7 / Bash 5.2.37
注意点 / セキュリティリスク
環境変数はプロセス挙動に強く影響します。誤ったPATHやLANGを与えると、別バージョンの実行ファイルが動いたり、文字化けや照合不一致が起きたりします。
FAQ
-
Q. printenvとの違いは何ですか。 A. envは一覧表示だけでなく、一時的な環境変更とコマンド実行もできます。
関連用語
参照リンク
- カテゴリー: Shell And Cli
- レベル: Basic
- 対応試験: LinuC, LinuC レベル1, LPIC, LPIC-1, 共通基礎