105.1標準
現在のBashでpythonという名前がalias、function、組込み、PATH上の実行ファイルのどれとして解決され得るか確認する。
見つかる候補を1つに限定しない。
適切なコマンドはどれか。
× 不正解
type -a NAMEはBashがNAMEをどう解釈するかを全候補について表示する。alias、function、builtin、fileを区別できる。
詳細解説
誤り
which python主にPATH上の1候補を示し、Bash内部の全種類を扱わない。
誤り。外部whichはaliasやfunction、builtinをBashと同じ規則で網羅せず、通常1つのパスだけを返す。
正しい
type -a pythonBashの解決規則で見つかる全候補と種類を表示する。
正しい。typeは現在Bashのalias、keyword、function、builtin、hash、PATH検索を反映し、-aで全候補を示す。
誤り
whereis python標準配置のバイナリ・ソース・man等を検索し、aliasやfunctionを扱わない。
誤り。ファイル配置をデータベース的に検索するため、現在シェルだけのaliasやfunctionを認識しない。
誤り
find / -name pythonファイル名検索で、シェルの解決順や内部定義を示さない。
誤り。広いファイル検索で負荷が高く、同名ファイルの存在とBashの実際の解決順を結び付けない。
実際に確かめる
一時的な検証環境で実行できる例です。
bash --noprofile --norc -c 'alias demo="printf alias"; demo(){ :; }; type -a demo'期待される結果
demo is a function。functionがaliasより優先して定義される一時例理解のポイント
- typeはシェル組込み
- -aは全候補
- 解決種類も表示
確認時の注意
- 確認環境: GNU Bash 5.2 / 一時シェル
基礎のおさらい
typeとcommand
type -PはPATH上の実行ファイル、type -tはaliasやfunction等の種類だけを表示できる。
hash
Bashは外部コマンドのパスを記憶する場合があり、hash -rで記憶を消去できる。
問題IDKP-105-609
確認環境GNU Bash 5.2 / 一時シェル
最終技術確認2026-08-13
誤り・権利侵害を報告