You can define your own autocomplete rules for options/arguments, using
complete. You can define filename suffices that are ignored in arguments by exporting variable
However, I don't think you can alter the way Bash resolves program names.
You could, of course,
alias the program you want to run, so you don't have to type so much:
[me@host ~]$ alias on=oneprog
[me@host ~]$ on
You could (if you were feeling silly) alias the Bash builtin,
command and use
complete to define the arguments it will accept (your list of nice programs), and then always remember to type your alias before your real command.
[me@host ~]$ alias run=command
[me@host ~]$ complete -W "ls cd" run
[me@host ~]$ run ls
See also How to have autocomplete ignore a specific completion.