Linux env コマンド完全ガイド
env は Linux/Unix システムで非常に便利なコマンドラインツールで、主に環境変数の表示と変更、およびカスタム環境でのプログラム実行に使用されます。
環境変数はオペレーティングシステムやユーザーが設定する動的な値で、実行中のプロセスの動作に影響を与えます。env コマンドは、これらの変数を表示・操作する便利な方法を提供します。
類推で理解する:環境変数はオフィスの掲示板のようなもので、すべてのスタッフ(プログラム)がそこに書かれた情報(環境変数)を見ることができ、その情報に応じて自分の働き方を調整します。
env コマンドの基本構文
env コマンドの基本構文は次のとおりです:
env [OPTION]... [NAME=VALUE]... [COMMAND [ARG]...]
引数を付けずに直接実行すると、env現在のすべての環境変数とその値が表示されます。
よく使うオプションと引数
env コマンドは以下のよく使うオプションをサポートしています:
| オプション | 説明 |
|---|---|
-i, --ignore-environment |
空の環境から開始し、継承した環境変数を無視する |
-u, --unset=NAME |
環境から指定した変数を削除する |
-C, --chdir=DIR |
コマンドを実行する前に指定したディレクトリに移動する |
-S, --split-string=S |
引数を複数の引数に分割する |
--help |
ヘルプ情報を表示する |
--version |
バージョン情報を表示する |
基本的な使用例
1. すべての環境変数を表示する
最も簡単な使い方は、直接envコマンドを入力することです:
例
これにより、現在のシェル内のすべての環境変数が出力されます。形式は変数名=値で、例えば:
USER=john HOME=/home/john PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
2. カスタム環境でコマンドを実行する
環境変数を一時的に設定してプログラムを実行できます:
例
この例では、一時的にLANG=Cを設定してから、lsコマンドを実行します。これにより、lsコマンドの出力言語が影響を受けます。
3. クリーンな環境を作成してプログラムを実行する
オプションを使用すると、-iクリーンな環境(既存の環境変数を一切継承しない)を作成できます:
例
ここでは、PATH変数だけを持つクリーンな環境を作成して、lsコマンドを実行しています。
高度な使い方
変数を一時的に変更してスクリプトを実行する
例
このコマンドは一時的にEDITOR環境変数をnanoに設定してから、crontab -eを実行します。これにより、nano エディターを使用して crontab を編集します。
2. 特定の環境変数を削除する
例
このコマンドは、lsを実行する際に、HOME環境変数を削除します。
3. shebang と組み合わせて使う
env はスクリプトの shebang 行でよく使われ、スクリプトの移植性を高めます:
例
この書き方は、直接/bin/bashを指定するより柔軟です。PATH環境変数の中から bash の場所を探すためです。
実際の活用シーン
1. 環境変数の問題をデバッグする
プログラムの動作が異常な場合、env を使って実行時の環境を確認できます:
例
これにより環境変数の干渉を排除し、環境変数が原因の問題かどうかを判断できます。
2. 信頼できないスクリプトを安全に実行する
出所不明のスクリプトを実行する場合、制限付きの環境を作成できます:
例
3. 異なるロケール環境でのプログラムの動作をテストする
例
env LANG=zh_CN.UTF-8 program
これにより、プログラムが異なるロケール環境でどのように動作するかをテストできます。
注意事項
- 変数の上書き:env で設定した変数は、既存の同名の環境変数を上書きします
- 子プロセスへの影響:env が変更した環境変数は、それが起動した子プロセスにのみ影響し、現在のシェルには影響しません
- セキュリティ:機密情報(パスワードなど)は環境変数で渡すべきではありません
- 変数の順序:後で設定した変数は、先に設定した同名の変数を上書きします