1.06.1標準
$HOME/tools/binと/usr/binの両方にdeployが存在する。
既存PATHを保ったまま、信頼済みの$HOME/tools/bin側を先に検索する。
適切な記述はどれか。
× 不正解
PATHは左から順に検索される。信頼済みディレクトリを先頭へ追加すると、同名コマンドの解決優先度が上がる。
詳細解説
誤り
export PATH="$PATH:$HOME/tools/bin"末尾追加のため、先にある/usr/bin側が優先される。
末尾追加では/usr/binが先に検索される。両方にdeployがある条件では、既存側が見つかってから検索が終わる。
正しい
export PATH="$HOME/tools/bin:$PATH"$HOME/tools/binを先頭要素にし、既存検索先より先に調べる。
$HOME/tools/binを先頭へ置くと、同名のdeployはこのディレクトリから先に見つかる。既存PATHも後ろに保持される。
誤り
export PATH="$HOME/tools/bin"既存検索先をすべて削除し、標準コマンドを見失い得る。
信頼済みディレクトリを優先できるが、既存PATHをすべて失う。/usr/bin等の標準コマンドを名前で実行できなくなる可能性がある。
誤り
export PATH="$PATH"PATHの順序を変えず、新しい検索先を追加しない。
現在値を同じ値でexportするだけで、新しいディレクトリも検索順の変更もない。$HOME/tools/binのdeployは見つからない。
実際に確かめる
一時的な検証環境で実行できる例です。
bash --noprofile --norc -c 'd=$(mktemp -d); printf "#!/bin/sh\n" >"$d/deploy"; chmod +x "$d/deploy"; PATH="$d:/usr/bin:/bin"; command -v deploy; rm -rf "$d"'期待される結果
一時ディレクトリ内のdeployパス理解のポイント
- PATHは左から検索
- 先頭追加で優先
- 信頼できる場所だけを前置
確認時の注意
- 確認環境: GNU Bash 5.2 / 一時ディレクトリ
- 既に解決結果がhashされているシェルではhash -rや新しいシェルで再確認する。
基礎のおさらい
左から最初
シェルはPATHを左から調べ、通常は最初に見つかった実行可能ファイルを選ぶ。
信頼境界
書き込み可能な第三者ディレクトリを先頭にすると、標準コマンドと同名の不正ファイルが優先される危険がある。
問題IDKL-102-912
確認環境GNU Bash 5.2 / 一時ディレクトリ
最終技術確認2026-08-13
誤り・権利侵害を報告