env エンブ

英語表記env

日本語表記環境変数表示・一時設定実行

正式名称env

危険度安全

What does it mean?

環境変数を一覧表示し、必要に応じて一時的に変更した環境でコマンドを起動します。スクリプト実行や挙動切り分けで非常に重要です。

Command Quest

env を今日の道具にする

環境変数を一覧表示し、必要に応じて一時的に変更した環境でコマ...

$ env [OPTION]... [NAME=VALUE]... [COMMAND [ARG]...]
関連用語11
次のコマンド0
FAQ1
参照4

概要

環境変数を一覧表示し、必要に応じて一時的に変更した環境でコマンドを起動します。スクリプト実行や挙動切り分けで非常に重要です。

基本構文

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分ミッション

少しでも手を動かすと定着しやすくなります。終わった項目にチェックを入れてください。

  1. env | sort | lessで現在の環境を眺め、HOME、PATH、LANGを確認します。

  2. env LANG=C dateと通常のdateを比較して表示差を確認します。

資格試験との関連

  • LinuC レベル1
    範囲: 1.03.1 コマンドラインの操作
    根拠: official
    LinuCレベル1では、コマンドライン操作やシェル環境の理解が問われます。envはその基礎を支える代表的なコマンドです。
  • LPIC-1
    範囲: 105.1 シェル環境のカスタマイズと利用
    根拠: official
    LPIC-1では、シェル環境、変数、履歴、コマンド解決の理解が重視されます。envはその周辺知識と一緒に学ぶ価値が高いコマンドです。
  • 共通基礎
    範囲: Linuxコマンド基礎
    根拠: editorial
    試験横断で、envはコマンドライン操作、手順読解、トラブルシュートの基礎体力を作る項目です。

オプション

  • -i
    空に近い環境から開始します。
    env -i PATH=/usr/bin:/bin sh -c "echo ok"
  • -u 名前
    指定した環境変数を外してコマンドを実行します。
    env -u LANG locale
  • -C ディレクトリ
    指定ディレクトリへ移動してからコマンドを実行します。
    env -C /tmp pwd

実行結果サンプル

  • env | grep "^HOME="
    HOME=/home/user
  • env LANG=C date
    Thu Apr  9 ...

戻り値コード

  • 0 一覧表示に成功、または起動したコマンドが正常終了しました。
  • 125 env自身の処理に失敗しました。GNU coreutils版で使われます。
  • 126 コマンドは見つかったが実行できませんでした。
  • 127 コマンドが見つかりませんでした。

使用例

  • env
  • env LANG=C date
  • env -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は一覧表示だけでなく、一時的な環境変更とコマンド実行もできます。

関連用語

  • ユーザー空間
  • 環境変数
  • PATH
  • HOME
  • LANG
  • ロケール
  • プロンプト
  • PS1
  • shebang
  • virtual environment
  • venv

参照リンク

関連記事