1.06.2標準
複数利用者が実行する管理スクリプトの先頭で、コマンド検索先を既知のディレクトリだけに固定する。
/usr/local/bin、/usr/bin、/binの順に検索する。
適切な記述はどれか。
× 不正解
スクリプト内でPATHを既知の信頼済みディレクトリへ設定すると、利用者環境や実行場所による同名コマンド解決差を抑えられる。
詳細解説
正しい
PATH=/usr/local/bin:/usr/bin:/bin; export PATH既知の3ディレクトリと順序へPATHを固定し、子コマンドへ渡す。
PATHを既知の絶対ディレクトリ3つへ置き換え、exportで子コマンドへ渡す。利用者ごとの検索先や順序を排除できる。
誤り
PATH=$PATH:/usr/local/bin利用者から受け取った既存PATHを残す。
既存$PATHを残すため、利用者が先頭へ追加したディレクトリの同名コマンドが引き続き選ばれ得る。
誤り
PATH=.:$PATH現在ディレクトリを最優先にし、実行場所の内容へ依存する。
.を先頭へ置くとスクリプトを起動したディレクトリの同名ファイルを最優先する。実行場所に依存し、安全性も下がる。
誤り
unset PATH検索変数を削除し、実装既定値や絶対パスに依存する。
PATHを削除するとコマンド検索が意図した3ディレクトリへ固定されない。実装既定のパスや絶対パス指定に依存する。
実際に確かめる
一時的な検証環境で実行できる例です。
sh -c 'PATH=/usr/local/bin:/usr/bin:/bin; export PATH; printf "%s\n" "$PATH"'期待される結果
/usr/local/bin:/usr/bin:/bin理解のポイント
- 既知PATHへ固定
- 検索順も明示
- 現在ディレクトリを含めない
確認時の注意
- 確認環境: POSIX sh / 短命プロセス
- コマンド配置はディストリビューションで異なるため、対象環境で固定PATHを検証する。
基礎のおさらい
決定的な検索
固定PATHにより、同じホスト上で利用者の対話設定が違っても同じコマンドを解決しやすくなる。
必要なコマンドを網羅
固定PATHへスクリプトが呼び出すすべての外部コマンドの配置先を含める。
問題IDKL-102-937
確認環境POSIX sh / 短命プロセス
最終技術確認2026-08-13
誤り・権利侵害を報告