1.03.1標準
PATHは/opt/tools/bin:/usr/bin:/binである。
同名のanalyzeという実行可能ファイルが/opt/tools/binと/usr/binの両方にある。
analyzeだけを入力したとき、通常選ばれるパスはどれか。
× 不正解
シェルはPATHのディレクトリを左から順に検索し、最初に見つけた実行可能な名前をコマンドとして選ぶ。
詳細解説
正しい
/opt/tools/bin/analyzePATHは左から検索され、最初に見つかる実行可能ファイルが選ばれる。
正しい。/opt/tools/binがPATHの左端にあるため、そこで見つかったanalyzeが/usr/binより優先される。
誤り
/usr/bin/analyze標準ディレクトリであっても、先に/opt/tools/binで見つかる。
誤り。標準配置であることはPATHの明示された順序を上書きせず、先の一致が選ばれる。
誤り
/bin/analyzeこのパスに存在するとは示されず、検索順も最後である。
誤り。/binに同名ファイルがある前提はなく、仮にあっても前の2ディレクトリより後に検索される。
誤り2つとも同時に実行される
通常のコマンド解決は最初の一致を1つ選ぶ。
誤り。シェルは同名候補をすべて起動せず、解決した1つのコマンドを実行する。
実際に確かめる
一時的な検証環境で実行できる例です。
tmp=$(mktemp -d); mkdir -p "$tmp/first" "$tmp/second"; printf '#!/bin/sh\necho first\n' >"$tmp/first/analyze"; printf '#!/bin/sh\necho second\n' >"$tmp/second/analyze"; chmod +x "$tmp/first/analyze" "$tmp/second/analyze"; PATH="$tmp/first:$tmp/second:$PATH" analyze; rm -rf "$tmp"期待される結果
first理解のポイント
- PATHは左から検索
- 最初の一致を実行
- 順序が優先度になる
確認時の注意
- 確認環境: Bash 5.x / 一時実行ファイル
基礎のおさらい
優先順位と安全性
PATHの先頭へ書き込み可能なディレクトリを置くと、同名コマンドのすり替えリスクがある。
hash
Bashは解決したコマンドパスを記憶することがあり、PATH変更後はhash -rが必要な場面もある。
問題IDKL-101-442
確認環境Bash 5.x / 一時実行ファイル
最終技術確認2026-08-13
誤り・権利侵害を報告