1.03.1標準
show-modeコマンドをAPP_MODE=debugの環境で1回だけ起動する。
現在のシェルにあるAPP_MODEの値は変更しない。
適切な形式はどれか。
× 不正解
env NAME=value commandは、そのコマンド用の環境へ値を設定して起動し、呼び出し元シェルの変数を変更しない。
詳細解説
誤り
export APP_MODE=debug; show-mode現在のシェルのAPP_MODEもdebugへ変更して残す。
誤り。export代入は親のAPP_MODEをdebugへ変更し、その後のコマンドにも影響を残す。
正しい
env APP_MODE=debug show-mode指定したコマンドの環境へAPP_MODE=debugを追加し、親の変数を変更しない。
正しい。envはshow-modeをAPP_MODE=debugで起動し、終了後の親シェルにある値normalを維持する。
誤り
unset APP_MODE; show-mode debug環境変数を削除し、debugを通常の引数として渡す。
誤り。unsetは値を削除し、後ろのdebugはshow-modeの通常引数であって環境変数にならない。
誤り
echo APP_MODE=debug | show-mode文字列を標準入力へ送り、環境変数を設定しない。
誤り。パイプで送られるAPP_MODE=debugは標準入力の文字列で、プロセス環境の項目ではない。
実際に確かめる
一時的な検証環境で実行できる例です。
APP_MODE=normal; env APP_MODE=debug bash -c 'printf "child=%s\n" "$APP_MODE"'; printf 'parent=%s\n' "$APP_MODE"期待される結果
child=debug
parent=normal理解のポイント
- envは子の環境を構成
- 親の値は維持
- 代入語はcommandの前
確認時の注意
- 確認環境: GNU coreutils env / Bash 5.x
基礎のおさらい
プロセスごとの環境
コマンド起動時に環境のコピーを構成でき、親の環境を直接書き換えずに動作を切り替えられる。
一時設定の用途
ロケールやデバッグモードなど、単発実行だけ変えたい値に適する。
問題IDKL-101-435
確認環境GNU coreutils env / Bash 5.x
最終技術確認2026-08-13
誤り・権利侵害を報告