異なるプロジェクト用に、異なるパスに同じファイル名の 2 つの別々のスクリプトがあります:
/home/me/projects/alpha/bin/hithere
と/home/me/projects/beta/bin/hithere
.
これに対応して、スクリプトごとに適切な補完が異なるため、2 つの別個の bash 補完スクリプトを用意しています。補完スクリプトでは、問題のスクリプトの完全な名前を指定して、補完ごとに「complete」コマンドが実行されます。
complete -F _alpha_hithere_completion /home/me/projects/alpha/bin/hithere
ただし、呼び出された実際のバージョンに関係なく、最後に実行されたスクリプトのみが効果があるhithere
ようです。bash の補完は、コマンドのファイル名のみを考慮し、パス情報を無視しているようです。
この動作を変更して、これら 2 つの独立したスクリプトを同じ名前で、それぞれ異なる補完関数を持つようにする方法はありますか?
アルファがベータについて知ることを必要とするソリューション、またはそれらのいずれかを知るために 3 番目のコンポーネントを必要とするソリューションには興味がないことに注意してください。