No.003シェル

env

エンブ・環境変数表示・一時設定実行

知識レベル 基礎安全に試せる一般ユーザーで使える

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

答えよく使う形

  1. 環境変数の一部だけを確認します
  2. そのコマンドだけロケールを変更して実行します
  3. 空に近い環境から開始します
visitor@goodly: ~

$ env | grep "^HOME="

HOME=/home/user

$ env LANG=C date

Thu Apr  9 ...

$ env

覚える順番の中でLPIC-1・40 駅め / 106

どんなコマンド?

こんなときに

現在の環境変数を確認したい時、一時的にLANGやPATHを変えてコマンドの挙動を確認したい時、不要な環境変数を外して不具合を切り分けたい時に使います。

envは、シェルから子プロセスへ受け渡される環境変数を確認、加工、上書きするためのコマンドです。何も引数を付けなければ環境変数一覧を表示し、NAME=VALUEを並べてからコマンドを書くと、そのコマンドだけに一時的な環境を与えて実行できます。

実務では、PATH、LANG、LC_ALL、HOME、http_proxyのような環境変数が原因で挙動が変わる場面がよくあります。envを使うと、現在の環境を観察したり、汚れた環境を切り離して再現試験したりできます。

書き方とオプション

組み立ててみるオプションを押すと、下の1行に足されます。もう一度押すと外れます。

$ env

使用例と実行結果

行を押すとコピーできます。

HOME=/home/user
環境変数の一部だけを確認します。
Thu Apr  9 ...
そのコマンドだけロケールを変更して実行します。

まず安全に試す

3分ミッション

手を動かすと覚えやすくなります。できたものに印を付けてください(この端末に残ります)。

0 / 2

つまずいたとき

env -iで実行したらコマンドが見つからない

原因PATHも消えているためです。

こうするPATH=/usr/bin:/binのように最小限のPATHを明示してから実行します。

終わったときの数(戻り値)

$ echo $?

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

気をつけることと入れ方

気をつけること

環境変数はプロセス挙動に強く影響します。誤ったPATHやLANGを与えると、別バージョンの実行ファイルが動いたり、文字化けや照合不一致が起きたりします。

たいていの Linux に最初から入っています(coreutils)。

環境による違い

POSIXのenvは環境を変更して別コマンドを起動する基本機能を定義します。GNU coreutils版では--unset、--ignore-environment、--chdir、--split-stringなど拡張が追加されています。

確かめた環境Debian GNU/Linux / 13 / GNU coreutils 9.7 / Bash 5.2.372026-04-09 に確認

よくある質問

printenvとの違いは何ですか。

envは一覧表示だけでなく、一時的な環境変更とコマンド実行もできます。

資格試験では

  • LinuC レベル1大事1.03.1 コマンドラインの操作
  • LPIC-1大事105.1 シェル環境のカスタマイズと利用
  • 共通基礎大事Linuxコマンド基礎

env を最後まで読みました。

Linux コマンド辞典に戻る27 / 144

Goodly のメニュー