Bash tab completion works for me in shell. GNU Emacs 23.2.1, x86_64-apple-darwin, on OS X 10.6.4.
Term works fine as well.
Term works fine as well.
git <TAB>
Is it completing subcommands, or is it trying to complete file names (I always observe the latter)? Now type alias foo='cd /'
foo
ls <TAB>
See how it tries to complete paths in ~ (or wherever your last path was instead of in the new directory).GNU Emacs 24.0.50.1 (Linux), and every version of Emacs I've used in the last 10 years.
The alias completion does appear broken, as you demonstrated.
git <TAB>
completes subcommands ls <TAB>
with the alias shows files from the root /GNU Emacs 23.1.1 (Linux)