はじめに
こんにちは!今回はenvコマンドについて解説します。
envは環境変数を表示・設定・実行するコマンドです。シェルの環境変数を確認したり、特定の環境変数を設定した状態でプログラムを実行したりできます。
環境設定って、何かやることが多いんですが、このコマンドで簡単に管理できますよ。
envコマンドとは
envは、環境変数を操作・表示する外部コマンドです。
主な使い方は3つあります:
- 環境変数をすべて表示 - 現在の環境に設定されている変数を一覧表示
- 環境変数を設定して実行 - 特定の環境変数を設定した状態でプログラムを実行
- 環境変数をクリアして実行 - 環境変数をすべてクリアした状態でプログラムを実行
使い道が多くて、実務的に活躍するコマンドです。
基本構文
|
|
変数を設定しない場合は、現在の環境変数をすべて表示します。
主なオプション
| オプション | 説明 |
|---|---|
-i |
環境をクリア(新しい環境変数を指定しない限り) |
-u 変数名 |
指定した環境変数を削除 |
-0 |
NUL文字で出力を区切る |
--ignore-environment |
環境をクリア(-iと同じ) |
--unset=変数名 |
指定した環境変数を削除 |
使用例
例1: 環境変数をすべて表示
|
|
実行結果:
|
|
現在設定されているすべての環境変数を表示します。
例2: 特定の環境変数を確認
|
|
実行結果:
|
|
grepと組み合わせて、特定の環境変数だけを確認できます。
例3: 環境変数を設定してコマンドを実行
|
|
実行結果:
|
|
新しい環境変数を設定した状態でprintenvコマンドを実行します。もとの環境には影響しません。
例4: スクリプトに環境変数を渡して実行
|
|
実行結果:
|
|
スクリプト実行時に環境変数を上書きします。ロケール設定を変更したい時に便利。
例5: 環境変数をクリアして実行
|
|
実行結果:
|
|
すべての環境変数をクリアした新しいシェルを起動します。テストや検証に使います。
例6: 環境変数をクリアして最小限の変数だけ設定
|
|
実行結果:
|
|
環境をクリアしつつ、PATHだけ指定して実行します。
例7: 複数の環境変数を設定
|
|
実行結果:
|
|
複数の環境変数をまとめて設定できます。
例8: 環境変数を削除して実行
|
|
実行結果:
|
|
USER環境変数を削除した状態で実行します。
例9: envコマンドで Pythonスクリプトを実行
|
|
実行結果:
|
|
Pythonの出力バッファリングを無効にして実行します。ログ出力をリアルタイムで見る時に便利。
例10: 言語設定を変更してコマンド実行
|
|
実行結果:
|
|
言語ロケール設定を英語に変更してコマンドを実行します。
Tips・注意点
元の環境に影響しない
|
|
envで設定した環境変数は、そのコマンド実行中だけ有効です。シェルの環境は変わりません。
printenvコマンドとの違い
|
|
envとprintenvはほぼ同じですが、envのほうがより多機能です。
-iオプションでテスト用環境構築
|
|
依存関係をテストする時に、クリーンな環境を作れます。
実践的な使い方
本番環境でのログ出力の調整
|
|
Node.jsアプリケーションを本番モードで実行。環境変数で動作を切り替えます。
Dockerのようなコンテナ内での実行
|
|
最小限の環境でシェルを起動。テスト環境のシミュレーション。
スクリプトをテスト環境で実行
|
|
ホームディレクトリを一時フォルダに変更してスクリプト実行。本環境に影響しません。
複数の設定で異なるプログラムを実行
|
|
フラグで動作モードを切り替えるスクリプトに便利。
まとめ
envコマンドのポイント:
- 環境変数をすべて表示または操作するコマンド
- オプションなし: 現在の環境変数をすべて表示
- 変数=値: 環境変数を設定した状態でコマンドを実行
- -i: 環境変数をクリアして実行
- -u: 特定の環境変数を削除
- よく使う組み合わせ:
env VAR=value command,env -i /bin/sh
元の環境に影響しないので、テストや一時的な設定変更に最適ですよ!