107.2標準
対話shellと異なるcron環境でも、/usr/local/binのコマンドを名前だけで確実に検索させる。
crontabへ追加する適切な設定はどれか。
× 不正解
crontabではNAME=value形式で環境を設定できる。PATHを明示するか、ジョブ内のコマンドを絶対パスで書く。
詳細解説
正しい
PATH=/usr/local/bin:/usr/bin:/bincrontabの環境変数設定として検索パスを明示する。
正しい。PATH=...という環境行が後続ジョブへ適用され、/usr/local/binを検索対象に含める。
誤り
export PATH=/usr/local/bin:/usr/bin:/bincrontabの環境設定欄はshell scriptのexport文として解釈しない。
誤り。ユーザーcrontabの環境設定はNAME=valueを直接書き、exportというshell組込みを環境行の先頭へ付けない。
誤り
path /usr/local/bin:/usr/bin:/bincrontabの変数代入構文ではない。
誤り。等号を使わないため環境変数設定と認識されず、有効な5時刻欄のジョブでもない。
誤り
SHELL=/usr/local/bin:/usr/bin:/binSHELLは実行shellのパスを指定し、検索パス一覧ではない。
誤り。SHELLには/bin/sh等の単一実行ファイルを指定し、コロン区切りのコマンド検索先はPATHへ設定する。
実際に確かめる
一時的な検証環境で実行できる例です。
line='PATH=/usr/local/bin:/usr/bin:/bin'; name=${line%%=*}; value=${line#*=}; printf '%s=%s\n' "$name" "$value"期待される結果
PATH=/usr/local/bin:/usr/bin:/bin理解のポイント
- NAME=value形式
- 対話shell設定を前提にしない
- 絶対パスも有効
確認時の注意
- 確認環境: POSIXシェル / 合成crontab環境行
基礎のおさらい
最小環境
cronは対話shellの.bashrc等を通常読まず、HOME、LOGNAME、SHELL、PATH等も対話時と異なる場合がある。
再現性
絶対パス、明示PATH、作業directory、locale、出力先を設定すると手動時との差を減らせる。
問題IDKP-107-693
確認環境POSIXシェル / 合成crontab環境行
最終技術確認2026-08-13
誤り・権利侵害を報告