printenvコマンドで環境変数を確認する方法|使い方・オプション・実行例

コマンドリファレンス

Linuxで環境変数を確認するには、printenv コマンドが最も手軽です。すべての環境変数を一覧表示したり、変数名を指定して特定の値だけを確認したりできます。この記事では printenv の基本構文・オプション・実行例に加えて、echo $VARenv との違い、確認時によくあるつまずきをまとめます。

環境変数の設定(export)や ~/.bashrc への永続化まで含めて知りたい場合は、Linux 環境変数の確認・設定コマンド|printenv / export / env の使い分けと永続設定もあわせて参考にしてください。

printenvとは?環境変数を確認する基本コマンド

printenv は、シェルに設定されている環境変数をそのまま表示するコマンドです。プログラムの動作確認や、PATH・LANG などの環境設定が正しく反映されているかを確認するときに使います。引数なしで実行すればすべての環境変数を一覧表示し、変数名を指定すればその値だけをピンポイントで確認できます。

似たコマンドに echo $変数名 がありますが、決定的な違いがあります。echoexport されていないシェル変数 も表示できるのに対し、printenv環境変数(export済みの変数)しか表示できません。「echoでは表示されるのにprintenvでは何も表示されない」という場合は、その変数がまだexportされていないことが原因です。

構文(Syntax)

printenv [変数名 ...]

変数名は複数指定でき、指定した順番どおりに1行ずつ値が出力されます。

主なオプション一覧

オプション説明使用例
(なし)すべての環境変数を一覧表示printenv
変数名特定の環境変数を表示printenv PATH
変数名 変数名複数の環境変数をまとめて表示printenv HOME LANG
-0出力を改行ではなく NUL 文字で区切るprintenv -0

環境変数を確認する実行例

すべての環境変数を確認する

引数を付けずに実行すると、現在のシェルに設定されている環境変数がすべて表示されます。

printenv

出力例:

SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
HOME=/home/user
LANG=en_US.UTF-8

特定の環境変数だけを確認する

PATH や LANG が正しく設定されているかをピンポイントで確認したいときは、変数名を指定します。

printenv PATH

出力例:

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin

複数の環境変数をまとめて確認する

変数名をスペース区切りで複数指定すると、指定した順に1行ずつ値が出力されます。

printenv HOME LANG
/home/user
en_US.UTF-8

grepと組み合わせて絞り込む

変数名の一部しか覚えていない場合や、特定のキーワードを含む環境変数をまとめて確認したい場合は grep と組み合わせます。

printenv | grep -i lang
LANG=en_US.UTF-8

出力を NUL 区切りにする

環境変数の値に改行が含まれる場合、通常の改行区切りでは正しく1件ずつ処理できません。-0 オプションを使うと、値の区切りを NUL 文字にできるため、スクリプトで安全にパースできます。

printenv -0

存在しない変数を確認した場合

指定した変数が存在しない場合、エラーメッセージは表示されず何も出力されません。ただし終了コードは 1(非ゼロ) になるため、シェルスクリプトでは終了コードを見て存在チェックができます。

printenv NOTFOUND
echo "終了コード: $?"
(何も表示されない)
終了コード: 1

よくある質問

printenvで環境変数が表示されないときは?

変数名のスペルミスがないか確認してください。それでも表示されない場合、その変数はシェル変数のまま export されていない可能性があります。export 変数名 を実行してから、再度 printenv で確認してください。

printenvとenvの違いは?

どちらも環境変数を一覧表示できる点は同じです。env は環境変数の表示に加えて、変数を一時的に上書きした状態で別のコマンドを実行する機能を持ちます。単に確認したいだけなら printenv、確認と一時的な変更・実行を同時に行いたいなら env を使うとよいでしょう。詳しくはenvコマンドの使い方を参照してください。

printenvとechoの違いは?

echo $変数名 はシェル変数・環境変数を問わず値を表示できます。一方 printenv 変数名 は環境変数(export済みの変数)しか表示できません。exportしていない変数を確認したいときは echo を、環境変数として正しく子プロセスに引き継がれるか確認したいときは printenv を使い分けます。

特定の環境変数だけを一覧から探すには?

変数名を正確に覚えていない場合は printenv | grep キーワード のように grep と組み合わせると、部分一致で候補を絞り込めます。

関連コマンド

  • env : 環境変数を表示・設定してコマンドを実行する。環境変数の一時指定やクリーンな環境での実行も可能。
  • export : 環境変数を新たに定義・設定する。printenvとセットで「設定→確認」の流れを覚えると効率的です。
  • unset : 不要になったシェル変数や環境変数を削除する。
  • set : シェル変数と関数を含めた一覧を表示する。

備考

  • 引数を指定しない場合、すべての環境変数が表示されます。
  • 存在しない変数を指定した場合は何も出力されませんが、終了コードは 非ゼロ(1) になります。
  • export されていないシェル変数は表示されません。表示するには先に export が必要です。
  • POSIXに準拠した基本的なコマンドで、ほとんどのLinux/Unix環境で利用可能です。

参考

Bash玄

はじめまして!Bash玄です。

エンジニアとしてシステム運用に携わる中で、手作業の多さに限界を感じ、Bashスクリプトを活用して業務を効率化したのがきっかけで、この道に入りました。「手作業は負け」「スクリプトはシンプルに」をモットーに、誰でも実践できるBashスクリプトの書き方を発信しています。

このサイトでは、Bashの基礎から実践的なスクリプト作成まで、初心者でもわかりやすく解説しています。少しでも「Bashって便利だな」と思ってもらえたら嬉しいです!

# 好きなこと
- シンプルなコードを書くこと
- コマンドラインを快適にカスタマイズすること
- 自動化で時間を生み出すこと

# このサイトを読んでほしい人
- Bashに興味があるけど、何から始めればいいかわからない人
- 定型業務を自動化したい人
- 効率よくターミナルを使いこなしたい人

Bashの世界に一歩踏み出して、一緒に「Bash道」を極めていきましょう!

Bash玄をフォローする

コメント