I just spotted this in the README.Debian that Debian supply with Bash:

  bash does not check $PATH if hash fails

  bash hashes the location of recently executed commands. When a command
  is moved to a new location in the PATH, the command is still in the
  PATH but the hash table still records the old location.

  For performance reasons bash does not remove the command from the hash
  and relook it up in PATH.

"For performance reasons"?!?

The only way I can parse that is as claiming it's better to complain 'No
such file or directory' than it is to run the command that the user
asked for (and is in the path) because the former is faster.  Really, do
you expect me to buy that?  Is that actually going to be useful to
anybody?

  Use 'hash -r' manually or set a bash option: 'shopt -s checkhash'.

Options make sense when different users genuinely have different
preferences, not to make up for stupidities in your default behaviour.

Smylers

Reply via email to