envコマンドで環境変数を確認・設定する方法|export・printenvとの違いもコマンド

宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)Linuxコマンド, LinuxコマンドA-E, システム管理コマンド > envコマンドで環境変数を確認・設定する方法|export・printenvとの違いもコマンド
「環境変数を確認したいけど、envとprintenvとsetの違いが分からない」
「シェルスクリプトの1行目にある #!/usr/bin/env bash って何だろう?」
環境変数はLinuxのあらゆる場面で使われています。コマンドの検索パス、言語設定、ホームディレクトリなど、システムの動作を裏で制御する重要な仕組みです。

この記事では、env コマンドの実践的な使い方を解説します。
環境変数の一覧表示から、一時的な変数設定でのコマンド実行、exportprintenv との違い、#!/usr/bin/env の仕組みまで網羅しました。
【この記事でわかること】
・envコマンドで環境変数一覧の表示と、一時的な変数設定でのコマンド実行ができる
・env / printenv / export / setの違いを正確に把握して使い分ける
・#!/usr/bin/env bashの仕組みを理解すると、移植性の高いスクリプトが書ける

「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
図解60P/登録10秒/解除も3秒 / 詳細はこちら

envコマンドとは?環境変数の基本

env は、環境変数の一覧表示と、環境変数を一時的に変更してコマンドを実行するためのコマンドです。

環境変数とは、シェルやプログラムに渡される「名前=値」形式の設定情報です。代表的なものを確認しておきましょう。

PATH:コマンドの検索パス(コロン区切り)
HOME:ユーザーのホームディレクトリ
LANG:言語・ロケール設定
SHELL:ログインシェルのパス
USER:現在のユーザー名
TERM:端末の種類

環境変数は子プロセスに引き継がれるのが特徴です。一方、export していないシェル変数は、そのシェル内でしか参照できません。

envコマンドの基本的な使い方

1. 環境変数の一覧を表示する

引数なしで env を実行すると、現在設定されている環境変数が全て表示されます。

$ env HOSTNAME=web-server01 SHELL=/bin/bash USER=tomohiro PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin HOME=/home/tomohiro LANG=ja_JP.UTF-8 (以下省略)

出力が多い場合は grep と組み合わせて絞り込みましょう。

# PATH関連の環境変数だけ表示する $ env | grep PATH PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

2. 特定の環境変数の値を確認する

特定の変数だけ確認したい場合は、echoprintenv の方が便利です。

# echoで確認する $ echo $HOME /home/tomohiro # printenvで確認する $ printenv HOME /home/tomohiro

3. 環境変数を一時的に設定してコマンドを実行する

env の最も実用的な機能がこれです。環境変数を一時的に変更した状態でコマンドを実行できます。元の環境変数は変更されません。

# LANGを一時的にCに変更してdateコマンドを実行する $ env LANG=C date Sat Mar 22 10:00:00 JST 2026 # 通常のdateコマンド(日本語ロケール) $ date 2026年 3月22日 土曜日 10:00:00 JST

この方法は、ロケール依存の出力をスクリプトで処理したい場合に重宝します。

envの応用オプション

1. env -i でクリーンな環境でコマンドを実行する

-i(ignore-environment)オプションを付けると、全ての環境変数をクリアした状態でコマンドを実行できます。

# クリーンな環境でbashを起動する $ env -i bash # 環境変数がほぼ空の状態になる $ env PWD=/home/tomohiro SHLVL=1 _=/usr/bin/env

スクリプトのデバッグで「特定の環境変数に依存していないか」をテストしたいときに便利です。

2. env -u で特定の環境変数を除外する

-u(unset)オプションで、特定の変数を除外してコマンドを実行できます。

# http_proxyを除外してcurlを実行する $ env -u http_proxy curl https://example.com

プロキシ設定を一時的に無効にしたい場合などに使います。

env・export・printenv・setの違い

環境変数を扱うコマンドは複数あります。違いを整理しておきましょう。

コマンド 用途 表示対象
env 環境変数の一覧表示 / 一時設定で実行 環境変数のみ
printenv 環境変数の表示(個別指定可) 環境変数のみ
export シェル変数を環境変数に昇格させる exportされた変数
set シェル変数と環境変数の両方を表示 全変数(関数含む)

envprintenv は環境変数だけを表示しますが、set はシェル変数(exportしていない変数)や関数定義も含めて表示します。

# シェル変数は env では表示されない $ MY_VAR="hello" $ env | grep MY_VAR (何も表示されない) # exportすると環境変数になり、envで表示される $ export MY_VAR="hello" $ env | grep MY_VAR MY_VAR=hello

#!/usr/bin/env の仕組みと使い方

シェルスクリプトやPythonスクリプトの1行目でよく見かける #!/usr/bin/env bash について解説します。

#!/usr/bin/env bash echo "Hello, World!"

この書き方は「PATHの中から bash を探して実行する」という意味です。#!/bin/bash と直接パスを書くよりも移植性が高くなります。

たとえば、Pythonスクリプトでは以下のように書くのが一般的です。

#!/usr/bin/env python3 import sys print(sys.version)

/usr/bin/python3 と書くとそのパスにPythonがない環境ではエラーになりますが、/usr/bin/env python3 ならPATH上のどこにあっても正しく実行されます。

環境変数が反映されない場合のトラブルシュート

1. exportを忘れている

変数を定義しただけでは、子プロセスに引き継がれません。

# これだとシェル変数のまま(子プロセスに渡らない) $ MY_VAR="test" # exportで環境変数にする $ export MY_VAR="test"

2. .bashrcの変更が反映されていない

~/.bashrc に環境変数を追記した場合、新しいシェルを開くか source コマンドで再読み込みしてください。

# .bashrcを再読み込みする $ source ~/.bashrc

3. ログインシェルと非ログインシェルの違い

SSH接続(ログインシェル)では ~/.bash_profile が読まれますが、ターミナルエミュレータ(非ログインシェル)では ~/.bashrc だけが読まれます。

環境変数の設定場所が間違っていると、特定の場面でだけ変数が未定義になります。確実に反映させたい場合は、~/.bash_profile から ~/.bashrc を読み込む設定にしておくのが定番です。

# ~/.bash_profile に以下を記述しておく if [ -f ~/.bashrc ]; then source ~/.bashrc fi

本記事のまとめ

やりたいこと コマンド
環境変数を一覧表示する env
特定の環境変数を確認する printenv 変数名
一時的に環境変数を変更して実行する env LANG=C コマンド
クリーンな環境でコマンドを実行する env -i コマンド
特定の環境変数を除外して実行する env -u 変数名 コマンド
シェル変数を環境変数にする export 変数名=値

環境変数の仕組みを正しく理解して、スクリプトのトラブルを自力で解決できるようになりたいですか?

環境変数の設計ミスはサーバー障害の原因になります。現場レベルの知識を体系的に学んでおきましょう。
ネットの切れ端の情報をコピペするだけでなく、現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。

「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

登録10秒/合わなければ解除3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録
宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として15年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。